2013-11-24 46 views
3

我有一個簡單的Hub在Azure中運行,我可以從Windows中的控制檯應用完美地工作。Xamarin.iOS上的SignalR - 隨機無法呼叫集線器方法

我剛建立了一個簡單的測試Xamarin.iOS應用程序,它給出了一些奇怪的行爲。

  1. 隨機對LTE/Wifi或模擬器/設備 - 調用中心方法失敗,There was an error invoking Hub method X
  2. 隨機約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方法會隨機發生超時。

這裏有一些事情我已經做了,都使得這個問題更加罕見,但它仍然存在:

  1. LongPollingTransport,不管是什麼
  2. 中添加Task.Delay成功Start之間第一Invoke

我設置EnableDetailedErrorstrue在服務器上,這似乎是發生了什麼服務器端:

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網站,但爲什麼它不能用作雲服務?

+0

您正在使用哪個端口? – NickD

+0

只是默認值,80.不使用https。 – jonathanpeppers

+0

使用Connection.TraceWriter啓用信號客戶端跟蹤以查看它是否爲您提供更多信息 –

回答

0

現在,解決方案是使用Azure網站而不是雲服務。

當我有時間時,我將創建一個repro並將其提交給SignalR Github問題頁面。本週晚些時候應該可以做到這一點。