我有一个使用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>
非常感谢任何帮助。
答案 0 :(得分:3)
对我有用的是在IIS设置中禁用匿名身份验证。
答案 1 :(得分:3)
我想我通过在Hub类中添加[Authorize]
属性来修复此问题。它只有几个小时,但我的SignalR驱动页面的表现要好得多。
答案 2 :(得分:2)
除了禁用匿名身份验证之外,我发现的另一个解决方案是添加
GlobalHost.HubPipeline.RequireAuthentication();
到public void Configuration(IAppBuilder app)
类中的Startup
方法。