我有两个具有Windows身份验证的asp.net应用程序。[App A:具有SignalR集线器
[HubName("docHub")]
public class DocumentHub : Hub
{
private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<DocumentHub>();
public void ReloadMenu()
{
Clients.All.ReloadMenu();
}
public void Reload()
{
Clients.All.Reload();
}
}
App B:使用App A
]调用SignalR client
的集线器方法
public void CallHub() { var url = string.Format("http://{0}/signalr/", HttpContext.Current.IsDebuggingEnabled ? "localhost:2051" : "kms.local"); var hubConn = new HubConnection(url, false); hubConn.Credentials = System.Net.CredentialCache.DefaultCredentials; var hubProxy = hubConn.CreateHubProxy("docHub"); hubConn.Start().Wait(); hubProxy.Invoke("Reload"); hubProxy.Invoke("ReloadMenu"); }
我的问题是,当涉及到
hubConn.Start().Wait();
行时,出现Unauthorized
异常。 stacktrace:
Exception information: Exception type: HttpClientException Exception message: StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { Cache-Control: private WWW-Authenticate: Negotiate WWW-Authenticate: NTLM X-UA-Compatible: IE=Edge Date: Sat, 15 Oct 2016 07:16:27 GMT Content-Length: 6286 Content-Type: text/html; charset=utf-8 } at Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.<>c__DisplayClass5_0.<Get>b__1(HttpResponseMessage responseMessage) at Microsoft.AspNet.SignalR.TaskAsyncHelper.TaskRunners`2.<>c__DisplayClass3_0.<RunTask>b__0(Task`1 t) Request information: Request URL: http://kms.local/WebDav/filename.xlsx Request path: /WebDav/filename.xlsx User host address: 172.00.00.00 User: DOMAIN\username Is authenticated: True Authentication Type: Negotiate Thread account name: NT AUTHORITY\NETWORK SERVICE Thread information: Thread ID: 61 Thread account name: NT AUTHORITY\NETWORK SERVICE Is impersonating: False Stack trace: at Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.<>c__DisplayClass5_0.<Get>b__1(HttpResponseMessage responseMessage) at Microsoft.AspNet.SignalR.TaskAsyncHelper.TaskRunners`2.<>c__DisplayClass3_0.<RunTask>b__0(Task`1 t)
因为两个应用程序都具有Windows身份验证方法,所以我不知道如何授权应用程序b的请求。
我有两个具有Windows身份验证的asp.net应用程序。应用A:具有SignalR集线器[HubName(“ docHub”)]公共类DocumentHub:集线器{私有静态IHubContext hubContext = GlobalHost ....
我有点面对非常相似的事物。任何帮助,将不胜感激。
StatusCode:401,ReasonPhrase:“未经授权”,版本:1.1,内容:System.Net.Http.StreamContent,标头:{缓存控制:私有服务器:Microsoft-IIS / 10.0 WWW-Authenticate:协商WWW-Authenticate: NTLM X-Powered-By:ASP.NET X-UA-Compatible:IE = edge Date:Sun,17 May 2020 01:19:51 GMT Content-Length:6291 Content-Type:text / html; charset = utf-8}