我在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客户端在服务器上进行身份验证,而不是在本地进行身份验证?
答案 0 :(得分:0)
现在我倾向于传递给SignalR的.NET客户端的凭据没有足够权限的理论。基本上每当我收到401错误时,我都会在服务器的事件查看器日志中看到一个新的Audit Failure条目,说明所使用的凭据无法登录。
有谁知道需要授予该帐户的权利?