SignalR:“用户身份在主动SignalR连接期间无法更改”与windows auth网站出错

时间:2014-07-30 20:48:14

标签: asp.net asp.net-mvc signalr

我有一个使用Windows身份验证运行signalR 2.1.0的MVC 5网站。因为我使用Windows身份验证登录/注销由IIS自动处理。偶尔我会收到403错误,说“#34;无法识别的用户身份”。在活动的SignalR连接期间,用户身份不能更改。"这并不是一直发生的,而且我似乎找不到它何时起作用和不起作用的模式。还有其他人遇到过这个吗?

以下是视图中的代码:

<script type="text/javascript">
        $(document).ready(function() {
            SignalRSetup();
        });

        function SignalRSetup() {
            // Declare a proxy to reference the hub.
            var hub = $.connection.tokenRequestHub;

            // Create a function that the hub can call to broadcast messages.
            hub.client.updateFromService = function(tokenRequestID, message, success) {
                var msg = "Token Request ID {0} => {1}".format(tokenRequestID, message);
                var notyType = (success) ? 'success' : 'error';
                noty({ text: msg, type: notyType, timeout: 2000 });
                if (success) {
                    refreshGrids();
                }
            };

            $.connection.hub.start();//this is where it errors!
        }
</script>

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

对我有用的是在IIS设置中禁用匿名身份验证。

答案 1 :(得分:3)

我想我通过在Hub类中添加[Authorize]属性来修复此问题。它只有几个小时,但我的SignalR驱动页面的表现要好得多。

答案 2 :(得分:2)

除了禁用匿名身份验证之外,我发现的另一个解决方案是添加

GlobalHost.HubPipeline.RequireAuthentication();

public void Configuration(IAppBuilder app)类中的Startup方法。