2012-02-24 249 views
4

這是我在幾次處理RESTful Web服務後第一次遇到這種錯誤。我發現很難追查錯誤的原因,希望你能幫助我。Fiddler - ReadResponse失敗:服務器未對此請求返回響應

我有登錄服務這個屬性

[WebGet(UriTemplate = "Login?username={username}&password={password}&ip={ip}", ResponseFormat = WebMessageFormat.Json)] 

使用招使用的服務:

GET http://localhost:3445/Authenticate/Login?username=jsm&password=a&ip=1

enter image description here

提琴手響應:

[Fiddler] ReadResponse() failed: The server did not return a response for this request. 

enter image description here

我不知道,如果它引起的,因爲Content-type: application/json當我嘗試將其更改爲xml:

[WebGet(UriTemplate = "Login?username={username}&password={password}&ip={ip}", ResponseFormat = WebMessageFormat.Xml)] 

它給了我這樣的結果:

enter image description here

有點奇怪。我做錯了什麼?我必須返回json對象..謝謝!

+0

我想我必須改變我用於測試Rest的工具。對於所有能夠閱讀此問題的人員,您可以建議測試Rest的什麼工具?一種能夠使用像POST,GET,PUT等協議的工具。除了小提琴手之外的工具..?謝謝 – fiberOptics 2012-02-24 07:52:40

+0

fiddler對我來說一直很不錯。上面的問題對於ResponseFormat = WebMessageFormat.Json並不少見。我喜歡看着RAW選項卡的Fiddler。 – peterept 2012-02-24 08:49:11

+0

您可以嘗試從WebGet atrribute中刪除ResponseFormat屬性,並檢查它是否有效。默認是xml,但是如果你指定你的content-type到application/json,那麼WCF Rest Api是智能的,能以客戶端可以理解的格式回覆 – Rajesh 2012-02-24 10:13:49

回答

4

錯誤的原因是加載束數據類型(請參閱上面的xml數據預覽)。 Json擁有大約65K個對象的限制,在我的項目中它超出了限制。所以最終的解決方案是創建DTO - 「數據傳輸對象」,以最小化要傳遞的數據。

+0

你有任何有關65k數字來自哪裏的信息?我一直在搜索JSON中的最大對象,無法找到任何有關它的信息或潛在的如何增加它,因爲我遇到了同樣的問題(我已經削減了DTO 13k +每個對象有6個字段) – Stonz2 2014-07-28 21:37:10

0

我有同樣的問題Fiddler] ReadResponse()失敗:。我的決議是:在IIS中,回收應用程序所在的應用程序池。

0

我用XAMPP並安裝小提琴手......同樣的錯誤發生...

我運行IIS的只是一旦(由於這是由於停止運行XAMPP)和一切正常。 :)

1

我不得不因爲不同的問題,同樣的錯誤幾次。主要原因是wcf不能序列化對象。

在我的第一種情況下,這是因爲返回的對象不是在服務中聲明的正確對象。該服務應該已經返回了學生對象,但是我返回了studentExtended對象(繼承對象)。

在我的第二種情況下,這是因爲dateTime屬性是不可序列化的形式(它是空的)。所以我把它改成DateTime.now打完,它再次工作

問候

+1

我的回答在一年後幫助了我:) – smoothumut 2016-06-29 17:21:16

0

我都面臨着同樣的問題。最後,在爲返回對象定義契約類型時發現問題。

我在下面所描述的更換[數據成員]至[EnumMember]:

[DataContract] 
public enum DiscountType 
{ 
    [EnumMember] 
    NONE = 0, 
    [EnumMember] 
    PERCENTAGE_DISCOUNT = 1 
} 

這個固定我的 「[提琴手] ReadResponse()失敗」 錯誤,我花了半天功夫。