【问题标题】:SignalR: "The user identity cannot change during an active SignalR connection" error with windows auth websiteSignalR:Windows auth 网站出现“在活动 SignalR 连接期间无法更改用户身份”错误
【发布时间】:2016-04-09 06:32:17
【问题描述】:

我有一个使用 Windows 身份验证运行 signalR 2.1.0 的 MVC 5 网站。因为我使用的是 Windows 身份验证登录/注销由 IIS 自动处理。有时我会收到 403 错误消息“无法识别的用户身份。在活动 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>

任何帮助将不胜感激。

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?
  • 我还没有找到解决方案(公平地说,我花了不到一个多小时的时间)。似乎这个问题在回发时发生得更频繁。因此,我将模型发布到控制器以(例如)保存用户,然后重定向到用户列表。用户列表会有这个问题。如果我只是导航到用户列表,那很好。如果你有任何发现,请告诉我!

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


【解决方案1】:

我想我通过向 Hub 类添加 [Authorize] 属性解决了这个问题。这才几个小时,但我的 SignalR 支持的页面表现得更好。

【讨论】:

  • 这为我解决了问题。谢谢!
【解决方案2】:

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

【讨论】:

  • 谢谢!几个小时以来一直试图解决这个问题。只需要几行代码,很好!
【解决方案3】:

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

GlobalHost.HubPipeline.RequireAuthentication();

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

【讨论】:

  • [Microsoft.AspNet.SignalR.Authorize] 可用于配置每个集线器或方法
猜你喜欢
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2016-11-05
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多