Windows phone 8 WP8信号器客户端在连接时挂起

Windows phone 8 WP8信号器客户端在连接时挂起,windows-phone-8,signalr,portable-class-library,Windows Phone 8,Signalr,Portable Class Library,我正在使用我的中心的示例。对于我的客户端,我使用的是一个PCL,它以Xamarin.Android和WP8(Profile158)为目标,并从Nuget添加了signer.NET客户端 然后我引用了Xamarin.Android和WP8项目中的PCL 它们都只是按照示例发送和接收聊天信息 作为ServerHub项目一部分的web客户端和Xamarin.Android应用程序都可以正常工作。但是,WP8应用程序挂起在hubConnection.Start().Wait() 所有客户端和集线器都位于

我正在使用我的中心的示例。对于我的客户端,我使用的是一个PCL,它以Xamarin.Android和WP8(Profile158)为目标,并从Nuget添加了signer.NET客户端

然后我引用了Xamarin.Android和WP8项目中的PCL

它们都只是按照示例发送和接收聊天信息

作为ServerHub项目一部分的web客户端和Xamarin.Android应用程序都可以正常工作。但是,WP8应用程序挂起在
hubConnection.Start().Wait()

所有客户端和集线器都位于同一WiFi网络上,两部手机都可以访问网页客户端

我使用的是2.0.0.0版本的信号服务器和.NET客户端

两个设备客户端使用的PCL客户端使用以下代码:

public class ChatClient
{
    private IHubProxy _chatHubProxy = null;

    public string Connect(Action<string, string> chatCallback)
    {
        var hubConnection = new HubConnection("http://192.168.0.4/SignalRSpike");
        hubConnection.Error += hubConnection_Error;
        hubConnection.Headers.Add("Id", "1");

        _chatHubProxy = hubConnection.CreateHubProxy("ChatHub");
        _chatHubProxy.On<string, string>("broadcastMessage", chatCallback);
        hubConnection.Start().Wait();
        return hubConnection.Transport.Name;
    }

    void hubConnection_Error(Exception ex)
    {
        Debug.WriteLine("Hub error: " + ex.ToString());
    }

    public async void SendMessage(string name, string message)
    {
        var result = await _chatHubProxy.Invoke<bool>("Send", name, message);
        Debug.WriteLine("Result of send: " + result);
    }
}
当应用程序挂起时,每隔一分钟左右就会出现一个新的
线程x退出

更新1

我正在使用IIS,应用程序池已集成


我还将客户端代码从PCL复制到WP8应用程序中,这样就不再依赖PCL程序集,但结果完全相同。

因此,尽管一些教程示例显示执行
Start().Wait()
这通常是个坏主意,因为它会阻塞当前线程。在本例中,它是UI线程。我的猜测是
Start()
也希望使用UI线程(至少在WP8上),因此我们会遇到死锁。将上面的更改为使用
Wait
而不是
Wait()
解决了问题。

因此,尽管一些教程示例显示执行
Start().Wait()
这通常是个坏主意,因为它会阻塞当前线程。在本例中,它是UI线程。我的猜测是
Start()
也希望使用UI线程(至少在WP8上),因此我们会遇到死锁。将上述内容更改为使用
Wait
而不是
Wait()
解决了问题。

我刚刚花了三个小时来诊断Signal不再使用我的重构和新单元测试的kingdom come MVC应用程序的原因,您的回答迫使我重新检查我接受的一行代码。谢谢,我刚刚花了三个小时来诊断为什么Signal不再使用我的重构和新单元测试的to kingdom come MVC应用程序,而你的回答迫使我重新检查了我认为正确的一行代码。非常感谢。
public class ChatHub : Hub
{

    public async Task<bool> Send(string name, string message)
    {
        // Call the broadcastMessage method to update clients.
        await Clients.All.broadcastMessage(name, message);
        return true;
    }
}
'TaskHost.exe' (CoreCLR: Silverlight AppDomain): Loaded 'Anonymously Hosted DynamicMethods Assembly'. 
'TaskHost.exe' (CoreCLR: Silverlight AppDomain): Loaded 'C:\Data\Programs\{34D909A2-97D5-4735-85F6-4B735F6C6769}\Install\System.Net.Http.DLL'. Cannot find or open the PDB file.
'TaskHost.exe' (CoreCLR: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Threading.Tasks.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CoreCLR: Silverlight AppDomain): Loaded 'C:\Data\Programs\{34D909A2-97D5-4735-85F6-4B735F6C6769}\Install\System.Net.Http.Primitives.DLL'. Cannot find or open the PDB file.
'TaskHost.exe' (CoreCLR: Silverlight AppDomain): Loaded 'C:\Data\Programs\{34D909A2-97D5-4735-85F6-4B735F6C6769}\Install\System.Net.Http.Extensions.DLL'. Cannot find or open the PDB file.
The thread 0x2b3c has exited with code 259 (0x103).
The thread 0x32a0 has exited with code 259 (0x103).
The thread 0x1f80 has exited with code 259 (0x103).