我有一個簡單的Hub
在Azure中運行,我可以從Windows中的控制檯應用完美地工作。Xamarin.iOS上的SignalR - 隨機無法呼叫集線器方法
我剛建立了一個簡單的測試Xamarin.iOS應用程序,它給出了一些奇怪的行爲。
- 隨機對LTE/Wifi或模擬器/設備 - 調用中心方法失敗,
There was an error invoking Hub method X
- 隨機約50% - 一切完美,就像在Windows控制檯應用程序 - 兩個甚至是將消息發送到一個另一個
我在iPhone 5S和iPhone 4S上測試了這個設備。
爲什麼會發生這種情況的任何想法?我在版本2.0.0上使用可移植NuGet包。
UPDATE:
這裏是我所得到的,當我啓用跟蹤(我削除我的域名):
2013-11-25 07:47:48.204 MyApp[5163:80b] 13:47:48.1865420 - null - ChangeState(Disconnected, Connecting)
2013-11-25 07:47:49.025 MyApp[5163:6b03] 13:47:49.0247930 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: GET http://mydomain.cloudapp.net/signalr/connect?transport=serverSentEvents&connectionToken=pVF6LN7KBOem7Ng2hrhx6dSByFe%2BxCr4u6RlY5V%2FtKf%2BHmOoJD5DfVpMySiUuDOaiIPlHI%2FtliqvuddvcDxnZQqi9tIYAxuyZOjYSG%2B9%2Fnx%2FQ%2B6m&connectionData=[{"Name":"MainHub"}]&noCache=c3d54c1d-ee78-49cc-85b4-2c87a024c32a
2013-11-25 07:47:49.203 MyApp[5163:6b03] 13:47:49.2023660 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: initialized)
2013-11-25 07:47:49.319 MyApp[5163:6b03] 13:47:49.3189120 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: {"C":"s-0,CF9","S":1,"M":[]})
2013-11-25 07:47:49.332 MyApp[5163:6b03] 13:47:49.3318670 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - ChangeState(Connecting, Connected)
2013-11-25 07:47:49.634 MyApp[5163:6b03] 13:47:49.6339640 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: {"C":"s-0,CFA","G":"54eYUWzlKXr9ezIoP1rZvj4DOQ00lfpXZ62PV+HwgzqCvgET2otfFNud1KzX24MjGplzkOwpyzqrVJ1jffBMyWppsDt9Tl+D25btqsxJWt6bBg3v4YfwobBKbpZaScgk/gPp5w==","M":[]})
2013-11-25 07:47:49.703 MyApp[5163:6b03] 13:47:49.7029070 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: {"C":"s-0,CFB","M":[]})
2013-11-25 07:47:58.090 MyApp[5163:6b03] 13:47:58.0894910 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: {})
2013-11-25 07:48:08.108 MyApp[5163:6b03] 13:48:08.1084000 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: {})
2013-11-25 07:48:18.118 MyApp[5163:6b03] 13:48:18.1178390 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - SSE: OnMessage(Data: {})
2013-11-25 07:48:22.097 MyApp[5163:6b03] 13:48:22.0968150 - d84a25b3-b426-4f0b-b4bc-7d170e3c1bd9 - OnMessage({"I":"0","E":"There was an error invoking Hub method 'MainHub.SignOn'."})
空OnMessage
,將繼續失敗後進行打印,每隔一段時間。
更新#2
測試和進一步檢查後,它似乎更容易比隨機相關的LTE VS無線網絡連接。回顧一下,我的機器在本地運行正常。部署到Azure時不需要。基本上調用hub方法會隨機發生超時。
這裏有一些事情我已經做了,都使得這個問題更加罕見,但它仍然存在:
- 力
LongPollingTransport
,不管是什麼 - 中添加
Task.Delay
成功Start
之間第一Invoke
我設置EnableDetailedErrors
到true
在服務器上,這似乎是發生了什麼服務器端:
Error in SignOn: System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MyNamespace.MainHub.<SignOn>d__0.MoveNext(); TraceSource 'w3wp.exe' event
其中,我認爲只是與客戶放棄有關。我看到一些Github issues與此相關的在Azure上,但它們標記爲已關閉...
更新#3
一時興起,我這個部署到Azure的標準節的網站,而不是雲服務。之後一切正常。任何想法爲什麼?顯然,我可以使用Azure網站,但爲什麼它不能用作雲服務?
您正在使用哪個端口? – NickD
只是默認值,80.不使用https。 – jonathanpeppers
使用Connection.TraceWriter啓用信號客戶端跟蹤以查看它是否爲您提供更多信息 –