jun*_*ace 5 timeout downgrade websocket signalr
我有一个API应用程序和一个Web应用程序(为了简单起见,在同一台服务器上 - 我稍后会做CORS的事情).
api正在使用owin + signalr并进行了正确的初始化(将其修剪下来以找到错误):
public void Configuration(IAppBuilder app)
{
GlobalHost.Configuration.TransportConnectTimeout = TimeSpan.FromSeconds(5);
app.MapSignalR();
app.UseWebApi(Startup.CreateConfiguration());
}
private static HttpConfiguration CreateConfiguration()
{
HttpConfiguration configuration = new HttpConfiguration();
configuration.MapHttpAttributeRoutes();
return configuration;
}
Run Code Online (Sandbox Code Playgroud)
除了连接到实际的websockets之外,一切似乎都能正常工作.每次客户端尝试建立连接时,都会有超时并且它会故障转移到SSE(或IE中的永久帧/长轮询).我将超时时间增加到25秒,并且出现了相同的症状.
在客户端上,我始终在启用日志记录时出现此错误:
SignalR: Connecting to websocket endpoint 'ws://[myurl]'.
SignalR: Websocket opened.
SignalR: **webSockets timed out when trying to connect.**
SignalR: Closing the Websocket.
SignalR: Attempting to connect to SSE endpoint 'http://[myurl]'.
SignalR: EventSource connected.
SignalR: serverSentEvents transport selected. Initiating start request.
SignalR: The start request succeeded. Transitioning to the connected state.
Run Code Online (Sandbox Code Playgroud)
我已经尝试过遵循signalR团队提供的指南,我看不出我错过了什么.
谢谢你的帮助!
更新:我下载了一个示例并在服务器上按原样运行.同样的情况,所以这可能是我错过的服务器配置设置.我还没找到我错过的东西.
您需要在服务器管理器中为网站启用 WebSockets。
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support
这可能与您的 IIS 设置有关。我在http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/supported-platforms上看到了这些
-IIS必须以集成模式运行;不支持经典模式。如果 IIS 使用服务器发送事件传输在经典模式下运行,则可能会出现长达 30 秒的消息延迟。
- 托管应用程序必须在完全信任模式下运行。
此外,它还提到了 .NET 4.5 作为目标框架。希望这有帮助。
| 归档时间: |
|
| 查看次数: |
5804 次 |
| 最近记录: |