我试图在我的web应用程序中使用SignalR,它托管在IIS7.5上。
我使用的是Windows7 X64 (没有SP1)和.Net 4.5和SignalR v2.0.3.0。
如果我从IIS express运行web应用程序,它可以正常工作,没有什么挂断,但是一旦我从IIS 7.5运行它,它就会挂断我的应用程序。我确认如果我禁用这段代码:
$.connection.hub.start().done(function () {
});一切都很好。下面是截图,这表明在hub启动后,所有请求都处于不确定的块状态。即使集线器需要8-9秒来响应,但是即使在那之后,如果我请求一个简单的JPG,我什么也得不到,并且处于无限期的块状态。

下面是应用程序池的截图。我是在集成模式下运行。

这是集线器类:
public class AppHub : Hub
{
public override Task OnConnected()
{
if (Context.User != null)
{
var email = Context.User.Identity.Name;
if (!string.IsNullOrEmpty(email))
{
UserRepository userRepository = new UserRepository();
userRepository.DoSomething(email, Context.ConnectionId);
}
}
return base.OnConnected();
}
public override Task OnDisconnected()
{
if (Context.User != null)
{
var email = Context.User.Identity.Name;
if (!string.IsNullOrEmpty(email))
{
UserRepository userRepository = new UserRepository();
userRepository.DoSomething1(email, Context.ConnectionId);
}
}
return base.OnDisconnected();
}
}发布于 2014-06-18 06:20:21
文档指出,您应该在dev计算机上使用IIS express,因为并发请求的数量受到限制。
当SignalR托管在IIS中时,支持以下版本。请注意,如果使用客户端操作系统,例如用于开发(Windows 8或Windows 7),则不应使用IIS或Cassini的完整版本,因为将有10个同时连接的限制,这些连接将很快到达,因为连接是短暂的、经常重新建立的,并且不再立即停止使用。IIS应在客户端操作系统上使用
Windows 10也是如此。
摘自这里的SignalR文档:http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/supported-platforms
发布于 2014-06-18 06:26:04
这可能是因为Windows 7上的请求执行限制,这限制了一次有多少并发请求才能排队)。根据这里的这个表格,IIS7.5的请求执行限制为3甚至1,这取决于您的操作系统,这很可能是由SignalR连接使用的。
https://stackoverflow.com/questions/24276762
复制相似问题