问:使用.NET客户端的SignalR身份验证在本地运行,但在服务器上运行

时间:2017-04-20 20:16:41

标签: c# asp.net-mvc authentication signalr credentials

我在IIS中托管我的signalR,并且我有一个位于同一网站的.net客户端。我使用Windows身份验证,因此凭据设置方式如下:

hubConnection.Credentials = CredentialCache.DefaultCredentials;

当我在本地运行网站时,这一切都有效,但在服务器上部署时会出现401错误:

SignalR: myhub.DoStuff failed to execute. Error: StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Server: Microsoft-IIS/8.5
  WWW-Authenticate: Negotiate
  WWW-Authenticate: NTLM
  X-Powered-By: ASP.NET
  Date: Thu, 20 Apr 2017 19:40:41 GMT
  Content-Length: 1293
  Content-Type: text/html
}

我在浏览器开发人员工具中看到上述错误,并且在运行此行时会发生错误:

hubConnection.Start().Wait();

我非常确定凭证本身是正确的,因为当我在本地运行网站,并放入部署在服务器上的集线器网址,并传入该服务器的凭据时,我我能够启动hubConnection。

那么什么可以防止SignalR .Net客户端在服务器上进行身份验证,而不是在本地进行身份验证?

1 个答案:

答案 0 :(得分:0)

现在我倾向于传递给SignalR的.NET客户端的凭据没有足够权限的理论。基本上每当我收到401错误时,我都会在服务器的事件查看器日志中看到一个新的Audit Failure条目,说明所使用的凭据无法登录。

有谁知道需要授予该帐户的权利?