SignalR冻结所有后续的http请求

TCM*_*TCM 3 .net c# asp.net iis signalr

我正在尝试在我的Web应用程序中使用SignalR,它在IIS 7.5上托管.

我使用的是Windows 7 X64(不带SP1)和.Net 4.5和SignalR v2.0.3.0.

如果我从IIS Express运行Web应用程序它工作正常,没有任何事情挂起,但只要我从IIS 7.5运行它就会挂起我的应用程序.我确认如果我禁用这段代码:

 $.connection.hub.start().done(function () {

 });
Run Code Online (Sandbox Code Playgroud)

一切正常.以下是截图,表明在启动集线器后,所有请求都处于无限期阻塞状态.甚至中心需要大约8-9秒来响应,但即使在那之后,如果我请求一个简单的JPG,我什么也得不到,并进入无限阻塞状态.

在此输入图像描述

这是应用程序池的屏幕截图.我在集成模式下运行.

在此输入图像描述

这是Hub类:

 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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Sha*_*ler 5

该文档指出您应该在您的开发计算机上使用IIS express,因为并发请求数量有限

当SignalR托管在IIS中时,支持以下版本.请注意,如果使用客户端操作系统(例如用于开发(Windows 8或Windows 7)),则不应使用完整版本的IIS或Cassini,因为将会施加10个同时连接的限制,这将很快达到由于连接是短暂的,经常重新建立,并且在不再使用时不立即处理.应在客户端操作系统上使用IIS Express

Windows 10也是如此.

取自SignalR文档:http: //www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/supported-platforms