Windows phone 8 来自Windows Phone 8的信号集线器连接

Windows phone 8 来自Windows Phone 8的信号集线器连接,windows-phone-8,signalr-hub,Windows Phone 8,Signalr Hub,我所尝试的应该是基本的;但一定是遗漏了什么。在本地运行的MVC3应用程序中定义了两个信号集线器。同一个解决方案有一个Windows Phone 8和一个Windows应用商店应用程序,两者都与信号器集线器进行实时通信。SignalR服务器使用最新的位,客户端使用最新的.NET nuget 在客户端,我习惯于这样写: IHubProxy SignalRChatHub; HubConnection chatConnection = new HubConnection(

我所尝试的应该是基本的;但一定是遗漏了什么。在本地运行的MVC3应用程序中定义了两个信号集线器。同一个解决方案有一个Windows Phone 8和一个Windows应用商店应用程序,两者都与信号器集线器进行实时通信。SignalR服务器使用最新的位,客户端使用最新的.NET nuget

在客户端,我习惯于这样写:

        IHubProxy SignalRChatHub;
        HubConnection chatConnection = new HubConnection("http://localhost:53478/");
        SignalRChatHub = chatConnection.CreateHubProxy("ChatHub");

        await chatConnection.Start();
        if (chatConnection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
        {
           // Stuff here.
        }
这在Windows 8应用程序客户端上运行得非常好&我们可以轻松地连接在IIS上本地运行的SignalR hub。但是,相同的代码不适用于Windows Phone客户端。connection.start()爆炸,出现404异常

经过一点研究,看起来WP Emulator VM被视为一台不同的机器,并且虚拟地使用主机的网络。因此,IIS可能会阻止来自外部的呼叫,而不允许从Windows Phone 8应用程序进入信号器集线器。因此,我调整了SignalR server应用程序的applicationhost.config,以允许从外部localhost进行连接。现在,信号集线器从本地主机和本地IP都可以正常工作。此外,路由已更改为允许Global.asax.cs中的跨域信令连接:

RouteTable.Routes.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
Windows Phone客户端代码更改为:

HubConnection chatConnection = new HubConnection("http://<LocalIP>:53478/");
HubConnection chatConnection=新的HubConnection(“http://:53478/”);
但这仍然会导致连接失败。start()出现“远程服务器返回错误:未找到”异常。我让Fiddler从电话仿真器嗅探网络流量,对connection.start()调用完全没有显示任何响应


我错过了什么?任何提示都会有帮助。。谢谢

我自己解决了。事实证明,WPDev仿真器的信号器连接问题实际上是由于IIS/Windows安全性造成的。再多一点IIS配置&通过Windows防火墙打开本地端口修复了这个问题。我会写博客;但这两个帖子起了作用: