2013-10-31 32 views
1

這是自我開始將OData用於移動應用程序以來遇到的最奇怪的問題之一。我開發的OData服務器由SQL Express 2008提供支持,並且在過去15個月中已將這種組合安裝在50臺不同的服務器和/或PC上。所有50臺服務器運行穩定,對大量數據具有一致的功能。OData HTTP400超時錯誤

一個前兩天我的一個客戶聯繫我表明我的客戶端應用程序(在iOS7運行)的,具有奇錯誤上來,發佈數據時,他們的服務器。該錯誤的HTTP代碼爲400,錯誤文本爲「操作無法完成(超時錯誤400)」。我的第一個問題是:爲什麼400碼返回超時錯誤?通常當我得到超時(由於防火牆等),他們在100倍的範圍內。在發生任何問題的服務器上的事件日誌中沒有指示。我自己的日誌(存儲在SQL數據庫中)顯示沒有錯誤(這很奇怪,因爲我在我的OData服務中使用通用異常捕獲方法來記錄任何問題)。我還沒有添加所有請求的日誌記錄的步驟。

錯誤發佈一個特定組數據時僅被升高。該設備的所有其他帖子功能完美。我讓客戶端重新安裝應用程序(刪除所有數據),然後下載導致錯誤的數據集。下載工作正常。我們開始對數據進行更改,以便在增量更改中發生錯誤時複製數據的外觀,將更改發佈到服務器並觀察結果。大多數增量更改都可以正常工作,但某些組合會導致錯誤發生。其中一個增量涉及大量更改並且帖子正常,但隨後更改任何對象(有時會在文本字段中更改爲6個字符)會導致發生錯誤。然而在某些情況下,更改已經發布到服務器的對象可以毫無問題地工作。

我擦了擦服務器的服務和組件進行了重新安裝。如果443有另一個監聽器導致問題,我轉移了TCP端口。我重置了服務器。這些都不會改變錯誤的行爲。

我最後溝的解決方案是完全重新安裝IIS和.NET Framework,但我顯然想避免這種情況,因爲它不是我的服務器...服務器從我目前的位置是海外所以調試是不是真的一個選項。希望有人有一個想法,我可以做些什麼診斷,試圖確定這個奇怪的'gremlin'的來源。

+0

我沒有解決方案,但我可以告訴你不要絕望;有[所有]的解釋(http://mina.naguib.ca/blog/2012/10/22/the-little-ssh-that-sometimes-couldnt.html)(你的問題看起來如此相似和如此不同) 。事實上,您沒有看到任何日誌中的任何內容,這表明這是相當低級的,但是從遠程設備獲得HTTP錯誤的事實表明它是高級別的。極其漫長:路徑上正在執行DPI的任何路由器?任何HTTP代理或反向代理? – tne

回答

0

您是否嘗試過使用諸如Fiddler工具更透徹的流量分析? 「超時」錯誤確實看起來很奇怪,從你發佈的信息來看,你的服務器是「海外」的。是否會出現正在使用/生成的「時間」,例如服務器時間,當地時間等?

只是爲了確認,數據的「相同」的確切集合總是失敗?你能通過遠程調試器或通過本地主機來複制嗎?如果是這樣,你可以打開「詳細錯誤」?

+0

道歉的混亂。關於作爲操作系統的服務器的評論是,它在我的海外。客戶端應用程序和服務器共同位於同一個WiFi網絡上。 –

+0

我已經使用Fiddler2進行開發,但只有成功捕獲出站數據包及其響應。有沒有關於'如何設置提琴手捕捉入站數據包'的好教程? –