【问题标题】:Fiddler - ReadResponse failed: The server did not return a response for this requestFiddler - ReadResponse 失败:服务器没有为此请求返回响应
【发布时间】:2012-02-24 04:14:14
【问题描述】:

这是我在处理 RESTful Web 服务几次后第一次遇到这种错误。我发现很难追查错误的原因,希望你能帮助我。

我有登录服务的这个属性

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

使用fiddler使用服务:

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

提琴手回应:

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

我不确定它是否是由Content-type: application/json 引起的,因为当我尝试将其更改为 xml 时:

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

它给了我这个结果:

有点奇怪。我做错了什么?我必须返回 json 对象。谢谢!

【问题讨论】:

  • 我想我必须更改用于测试 Rest 的工具。对于所有能够阅读此问题的人,您可以建议使用什么工具来测试 Rest?一个能够使用 POST、GET、PUT 等协议的工具。除了提琴手之外的工具..?谢谢
  • fiddler 对我来说已经相当不错了。您的上述问题在ResponseFormat = WebMessageFormat.Json 中并不少见。我喜欢在 Fiddler 中查看 RAW 选项卡。
  • 您能否尝试从您的 WebGet 属性中删除 ResponseFormat 属性并检查它是否有效。默认值为 xml,但如果您将内容类型指定为 application/json,WCF Rest Api 会智能地以客户端理解的格式回复
  • @Rajesh 它会工作,但它会返回 xml 数据,而不是 Json 格式的数据。
  • 你能发布你的方法框架吗?还要发布您用于上述服务的配置

标签: c# json wcf rest


【解决方案1】:

错误的原因是加载了一堆数据类型(见上面的xml数据预览)。 Json 有大约 65K 个对象的限制,在我的项目中它超过了限制。所以最终的解决方案是创建 DTO - “数据传输对象”,它将最小化要传递的数据。

【讨论】:

  • 你有关于这个 65k 号码来自哪里的任何信息吗?我一直在谷歌上搜索 JSON 中的最大对象,但找不到任何有关它的信息或可能如何增加它,因为我遇到了同样的问题(而且我已经用 DTO 减少了。13k+每个对象有 6 个字段)
【解决方案2】:

由于不同的问题,我多次遇到相同的错误。主要原因是 wcf 无法序列化对象。

在我的第一种情况下,这是因为返回的对象不是服务中声明的正确对象。该服务应该返回学生对象,但我返回的是 studentExtended 对象(继承对象)。

在我的第二种情况下,这是因为 dateTime 属性的形式不可序列化(它为空)。所以我把它改成了 DateTime.now 所以之后它又可以工作了

问候

【讨论】:

  • 一年后我的回答帮助了我:)
【解决方案3】:

我遇到了同样的问题 Fiddler] ReadResponse() failed:.我的解决方案是:在 IIS 中,回收应用程序所在的应用程序池。

【讨论】:

    【解决方案4】:

    我使用的是 Xampp 并安装了 Fiddler...发生同样的错误...

    我只运行了一次 IIS(由于运行 Xampp 而停止),一切都很好。 :)

    【讨论】:

      【解决方案5】:

      我也遇到过同样的问题。终于找到了定义返回对象的Contract类型的问题。

      我已将 [DataMember] 替换为 [EnumMember],如下所述:

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

      这修复了我花了半天时间的“[Fiddler] ReadResponse() failed”错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        • 2016-12-29
        • 2010-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多