2012-02-24 88 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()失败” 错误,我花了半天功夫。

相关问题