【问题标题】:How to connect Hub if Hub is in different project SignalR?如果 Hub 在不同的项目 SignalR 中,如何连接 Hub?
【发布时间】:2018-03-25 15:10:31
【问题描述】:

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

我的项目结构如下:

-ChatHub
  -Hub
-Webapi
-Website 

这是我的中心:

[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; 

这是我从外部(Android)连接 Hub 的方式:

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?

我已经查看了Sharing a SignalR hub between a WebApi and MVC project,但没有得到他们提供的答案。

【问题讨论】:

    标签: c# android asp.net-web-api signalr signalr-hub


    【解决方案1】:

    在设置连接和到集线器的代理后,您是否正在调用 mHubConnection.Start()?传递给 HubConnection 构造函数的 url 是否也是集线器的正确位置?如果您还没有浏览过这些链接,这里有几个可能会有所帮助的链接:Access hub from .NET clientconfigure signalr url

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2020-05-07
      相关资源
      最近更新 更多