加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 当IIS在不同的系统上运行时,SignalR WPF客户端

发布时间:2020-12-16 09:38:31 所属栏目:asp.Net 来源:网络整理
导读:我只是用signalR玩一点.我的应用程序只有一个存储在ASP.NET应用程序中的简单集线器,我编写了一个 WPF客户端,它通过集线器连接和创建的代理与ASP.NET应用程序进行交互.在我的本地PC上一切正常.我在IIS上部署了ASP.NET应用程序. 现在我明白了…… 当我在自己的
我只是用signalR玩一点.我的应用程序只有一个存储在ASP.NET应用程序中的简单集线器,我编写了一个 WPF客户端,它通过集线器连接和创建的代理与ASP.NET应用程序进行交互.在我的本地PC上一切正常.我在IIS上部署了ASP.NET应用程序.

现在我明白了……

当我在自己的PC上输入以下内容时(pcthi-and)

http://pcthi-and:8080/signalr/hubs

我会得到我想要的东西

当我在另一台电脑的浏览器中键入相同的网址时,我会得到相同的响应,一切看起来都很好.

但我的应用程序仅适用于我的电脑,而不适用于另一台.当我在另一台PC上启动集线器连接时,我没有得到connectionId.

我试图将URL更改为我的IP地址而没有效果.

浏览器调用中心工作,但应用程序不起作用.

电话看起来像这样:

private bool tryToConnectToCoffeService()
    {
        try
        {
            this.hubConnection = new HubConnection(ConfigurationManager.ConnectionStrings["coffeeConnection"].ConnectionString);

            this.hubConnection.Credentials = CredentialCache.DefaultNetworkCredentials;

            this.coffeeService = this.hubConnection.CreateHubProxy("coffee");

            this.hubConnection.Start();

            if (string.IsNullOrEmpty(hubConnection.ConnectionId))
            {
                return false;
            }

            return true;
        }
        catch(Exception ex)
        {
            return false;
        }
    }

Global.asax:

public class Global : System.Web.HttpApplication
{

    protected void Application_Start(object sender,EventArgs e)
    {
        RouteTable.Routes.MapHubs();
    }

像这样的中心

[HubName("coffee")]
public class CoffeeHub : Hub
{

我的Hub连接字符串是这样的:

"http://pcthi-and:8080/"

要么:

"http://My-Current-IP-Address:8080/"

我使用SignalR 1.0 rc2.

有没有人有想法?谢谢你的帮助.

干杯

坦率

解决方法

我想你需要改变

hubConnection.Start();

hubConnection.Start().Wait();

如果您运行的是.NET 4.5,则可以将tryToConnectToCoffeService方法设置为异步,然后在启动集线器连接时等待.

await hubConnection.Start();

今天它可能适用于localhost,因为客户端可以在if(string.IsNullOrEmpty(hubConnection.ConnectionId))执行之前完成连接.

当您不等待HubConnection.Start()完成时,可能需要更长时间才能从另一台暴露竞争条件的机器进行连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读