如果集线器在不同的项目SignalR中,如何连接集线器?

我正在与SignalR项目合作,我想在WebApi项目以及Web项目中使用Hub。 所以我创建了一个类库项目并在那里实现了Hub。

我的项目结构如下所示:

-ChatHub
  -Hub
-Webapi
-Website 

这是我的Hub:

[HubName("chathub")]
public class ChatHub : Hub
{
   public override Task OnConnected()
   {
       return base.OnConnected();
   }

   public override Task OnReconnected()
   {
       return base.OnReconnected();
   }   
}

当我从我的网站呼叫Hub时,它运行良好。

 <script src="~/signalr/hubs"></script>
 var chatHub = $.connection.chathub; 

以下是我如何从外部连接Hub(Android):

mHubConnection = new HubConnection(http://{IpAddress}/ChatApp/);
mHubProxy = mHubConnection.createHubProxy(chathub);

API:

public IHttpActionResult LoginUser([FromBody]LoginModel model)
{
  var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();   
  //chatUser logic here
  hubContext.Clients.Client(chatUser.ConnectionId).receiver(response);
}

但它给了我一个错误:

java.util.concurrent.ExecutionException:microsoft.aspnet.signalr.client.transport.NegotiationException:与服务器进行协商时出现问题10-13 18:15:54.074 18686-18686 / com.chatapp.android W / System .err:导致:microsoft.aspnet.signalr.client.http.InvalidHttpStatusCodeException:无效的状态码:404

如果我的Hub不在API项目中,我们如何连接Hub?

我已经通过在WebApi和MVC项目之间共享SignalR枢纽,但没有得到他们提供的答案。


你是否在设置连接和代理到集线器后调用mHubConnection.Start()? 此外,传递给HubConnection构造函数的网址是集线器的正确位置? 以下是一些可能有用的链接,如果您尚未完成这些链接:从.NET客户端访问集线器,配置signalr url

链接地址: http://www.djcxy.com/p/96187.html

上一篇: How to connect Hub if Hub is in different project SignalR?

下一篇: Asp Net Core SignalR hub in another project