问题标签 [self-host-webapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
371 浏览

c# - Httpselfhostserver 未绑定任何 BaseAddress

我使用HttpSelfHostServer并且我想将它绑定到唯一的指定前缀上。

在我开始之前,我StatServer以管理员身份运行命令:“netsh http add urlacl url= http://+:8080/ user=machine\user”

当我尝试“ http://perchik:8080/controller/id ”或“ http://localhost:8080/controller/id ”时出现“ERR_NAME_NOT_RESOLVED ”。

我想使用prefixlike perchik-placeholder,但随机前缀 neizer perchik-word 也不起作用 PS

如果我HostNameComparisonMode = HostNameComparisonMode.Exact从上面的代码中删除行:“ http://perchik:8080/controller/id ”仍然无效,但“ http://localhost:8080/controller/id ”有效。

0 投票
1 回答
823 浏览

c# - HttpSelfHostServer 使用像 HttpListener 这样的前缀

中有Prefixes字段HttpListener。您可以添加一些字符串,例如“ http://+:8080/ ”,您的应用程序只需处理对 8080 端口的所有查询。

我有HttpSelfHostServer它只能使用有效的 Uri 字符串,例如它的HttpSelfHostConfiguration类的输入。我想在我HttpSelfHostServer喜欢的HttpListener前缀中获得相同的行为,例如:

http://+:8080/

http://*:8080/

http://some.url:8080/

等等...

0 投票
0 回答
926 浏览

websocket - SelfHost Websocket - Web API 与 OWIN 中间件

我正在运行一个 OWIN 自托管应用程序,该应用程序托管一个 REST API,还允许实时数据的 websocket 连接。我正在使用 WebAPI 来处理路由到控制器的路由和映射。

当我使用 Web API 处理 websocket 路由时,一旦控制器返回,套接字就会关闭。但是,如果我创建自己的中间件,则套接字不会关闭。

我更愿意为我的所有路线使用 Web API。但更重要的是,我想了解发生了什么。我不喜欢我的生产代码在不了解它为什么工作的情况下工作。

以下是相关的 Web API 代码片段:

对 ReceiveAsync 的调用会安排继续。Get 方法返回到关闭连接的 ApiController,这也关闭了 websocket。

这是OWIN中间件的相关代码。

在调用 ReceiveAsync 和 Invoke 方法返回期间再次安排继续。但是,连接仍然打开,我可以通过 websocket 发送和接收数据。

所以,我有一个解决方案,但我真的很想了解发生了什么。任何参考将不胜感激。

编辑:实际上套接字在这两种情况下都是关闭的。Web API 版本从服务器发送 RST,就好像连接被突然关闭一样,而 OWIN 版本则经历正常的 FIN ACK。然而,Web API 不允许通过 websocket 进行任何进一步的通信,而 OWIN 版本则允许。所以我不确定这应该如何工作。

0 投票
0 回答
50 浏览

c# - 如何强制camelCase响应?

我试图在我的 ConfigureApp 方法中使用以下行强制执行 camelCase 响应:

整个方法:

我正在从我的控制器返回以下响应:

我得到的回应是:

我期待的回应是:

如何强制 camelCase 响应(姓氏与姓氏)?

0 投票
0 回答
177 浏览

.net - 带有 webpack-dev-middleware 和 webpack-hot-middleware 的 OWIN Selfhost

我想知道是否存在任何用于将 webpack-dev-middleware 和 webpack-hot-middleware 与 OWIN Selfhost full .Net46 集成的 nuget 包,例如 AspNetCore - Microsoft.AspNetCore.SpaServices?

0 投票
1 回答
2267 浏览

c# - .net webapi 自托管 ssl

我想创建一个可通过 https (ssl) 访问的自托管 webapi。我有点困惑,因为我看到了许多不同的方法来做到这一点。我读了一些关于 Karma 和 owin 的文章。据我所知,Owi​​n 是目前执行此操作的方法。Ao 我用 http 实现了第一个测试,一切看起来都很好。但现在我想使用https。我读到您必须将 ssl 证书绑定到 ip 和端口。为此,我应该调用 netsh。但我有多台客户机器必须运行此服务。有没有办法在代码中自动完成?我的意思是为什么我必须手动完成?

0 投票
1 回答
1144 浏览

c# - 如何基于 web 套接字将 http web 请求中继到本地 api

我必须实现一个架构来解决下图所代表的问题:

云到本地 API

基本上,我必须在云 (Azure) 中部署公共 API,但数据位于本地机器中。本地机器公开提供数据的 Swagger API。每台本地机器都有一个唯一标识符(安装标识符),允许我们路由请求。

我按照以下链接中建议的方法,基于 Azure Service Bus 的 Relay 模块开发了一个解决方案:

对本地 API 的安全 Internet 访问

基于 Azure Service Bus 的 Relay 模块的解决方案解决了我的问题,满足了我的大部分需求,但它有一个问题,延迟很糟糕。

我在同一个地理区域部署了公共 API 和服务总线端点,一个简单的请求 GET /companies 平均需要 1.5 秒,本地 API 的处理时间非常短,只有几毫秒..

为了保持低延迟,我一直在考虑使用网络套接字,但我不知道是否是考虑到这种情况的最佳方法,因为对于公共 API 的每个请求,我都必须打开一个网络套接字通道到 ApiController 内部的本地 API 并处理它的生命周期(在返回响应之前关闭它)。

显然,在这种场景下,on-premise API 中的每个 ApiController 都应该同时提供对 web sockets 和 http 的支持。

另一种解决方案是实现一个 http 代理,将原始请求从公共 API 中继到本地 API,但从我的角度来看,可能的最佳延迟是使用没有连接管理器的通信 P2P 实现的,因此我现在的重点是网络套接字。

我想尽可能地满足标准,因此我想使用“纯”网络套接字,这意味着不使用 Signalr。

有一次,我暴露了我的问题,解决方案和替代方案,我的问题如下:

  1. 如何在 ApiController 类的操作方法中打开 Web 套接字并将原始 http 请求从公共 API 中继到本地 API?

  2. 如何在本地 API 中为 HTTP 和 WebSockets 协议提供支持。本地 API 应该能够处理 HTTP 请求以及 WebSocket 请求。

  3. 我的第一个赌注是使用 System.Net.WebSockets,但我想知道是否存在与 ASP.NET Web API 集成时发光的任何 websockets 库。

0 投票
1 回答
1235 浏览

c# - C# 自托管 Web - 另一个应用程序使用的 TCP 端口 (win10)

刚开始尝试在 Windows 10 1703 (15063.483) 中使用自托管 webapi 应用程序时出现异常

VS2017:版本 15.2 (26430.15) 发布 VisualStudio.15.Release/15.2.0+26430.15

我尝试在管理员模式下运行 VS,结果与非管理员模式相同。我的应用程序正在尝试使用http://192.168.12.118:50231 该项目是一个 .NET 4.5 WPF 应用程序。

在应用程序第一次失败后,我做了:

  • netsh http 删除 urlacl url= http://+:50231/
  • netsh http 添加 urlacl url= http://+:50231/ user=AD\USER

  • netsh http show url => 显示注册成功

  • netstat -o -n -a => 显示该端口上没有其他应用程序在任何 IP 上运行

这是我正在使用的代码:

这是我得到的异常,当执行命中 OpenAsync 时:

TIA

0 投票
1 回答
899 浏览

c# - 增加 Web Api OWIN 自主机中的请求标头限制

我有一个托管在 Service Fabric 中的 Web Api 2 应用程序,它使用 Microsoft.AspNet.WebApi.OwinSelfHost 来托管服务。我的 Startup 课程非常典型:

service farbric 服务正在其CreateServiceInstanceListeners()方法中启动 Web 侦听器:

OwinCommunicationListener 是一个服务结构监听器,它最终将启动 Web 服务器:

我遇到了一些请求的问题,我试图通过请求标头传递大量数据。我似乎达到了极限,因为我的请求被以下内容拒绝:

错误请求 - 请求太长 HTTP 错误 400。请求标头的大小太长。

有没有办法配置自托管 Web api 以增加请求标头的限制?

0 投票
0 回答
179 浏览

c# - 在客户端接收 HttpResponseMessage 时出现异常

我创建了一个自托管的 WEB API,效果很好。通过 HttpResponseMessage 返回对象时,客户端代码中出现异常。异常读取 - “底层连接已关闭:接收时发生意外错误。” 并且消息是“发送请求时发生错误。”。请看附件。

客户代码:

服务器代码:

作为替代方案,我也尝试返回一个 json 字符串。但是,控制器无法序列化对象(复杂类型的 Teigha.Runtime.RxClass)并且不向客户端返回任何内容。我正在使用 json 6.0.0.0 进行序列化和反序列化。

你能帮忙的话,我会很高兴。注意:虽然不确定,但我认为以前我能够直接返回“对象”而不使用 HttpResponseMessage 或 Json。