使用另一个应用程序的SignalR集线器

问题描述 投票:1回答:1

我有两个具有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 ....

c# asp.net signalr.client
1个回答
0
投票

我有点面对非常相似的事物。任何帮助,将不胜感激。

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}

© www.soinside.com 2019 - 2024. All rights reserved.