【问题标题】:What is limit of Post in Fiddler or C#Fiddler或C#中Post的限制是什么
【发布时间】:2016-06-03 07:43:25
【问题描述】:

当我从客户端以二进制形式发送大图像 (627 kb) 时,我正在尝试测试为什么我的服务器响应 500 错误。因此,我将客户端在 fiddler 中发送的值带到了服务器所在的同一台机器上。 我不断增加和减少二进制值的数量。我用断点标记 post 方法的开头,然后在每次测试时检查对象是否为空:

实体有一个值属性,称为:字符串类型的 ImageDataString,其中包含二进制值。

我注意到,如果我在 fiddler 中的箭头处为帖子增加 1 个字符,则对象变为 null

谁的限制使发布请求、Fiddler 或 C# OData Api 无效?事实上,我的形象身体远不止这些长度。它可以达到 10 毫克,我应该怎么做才能发送大图像并能够测试在 fiddler 中发送它们的二进制文件!?

【问题讨论】:

  • 两者都不是,IIS 的默认限制为 4 MB。尝试实际阅读“500 错误”并进行研究。
  • 我从提琴手启动到 api 的那一刻起停止执行,到我上面提到的断点;因此,还没有错误。所以,它是 IIS,很高兴知道。谢谢
  • @CodeCaster,当超过 IIS 的最大内容长度时a 404 is be returned not a 500。但是 4194304 Bytes = 4096 KB = 4 MB 的内容长度确实表明超出了 IIS 的默认内容长度限制。很奇怪。
  • @user1019042,你得到的确切错误是什么?是否有与 HTTP 状态代码一起返回的原因短语?你试过increasing the maximum request length吗?
  • @Abbondanza 进展!是的,我按照您记下的链接添加了 web.config 设置,它让我添加了更多字符。我还有很多价值观要测试,但我想我应该来表达感激之情。请添加它作为答案,所以我标记它。注意:我没有收到错误。我只是想用断点“观察”api端的对象,看看它是否有值或空值。我需要它填充不为空。有一个字符计数中断器,它将显示对象已填充或为空。

标签: c# asp.net-web-api odata fiddler


【解决方案1】:

您的请求可能超出了 IIS 的最大内容长度限制。 Adjust it in your Web.config:

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="<upper limit in KB>" />
    </system.web>
</configuration>

对于 >=7 的 IIS 版本,您还必须配置此值:

 <system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="<upper limit in Bytes>" />
      </requestFiltering>
   </security>
 </system.webServer>

您可能遇到的另一个问题是,如果您在请求正文中添加随机字符,base 64 解码可能会失败。

当您使用 base 64 编码数据时,输出字符串将为 padded to have a length divisible by 3。如果将随机字符添加到 base 64 字符串,则填充将是错误的,因此解码将失败。

如果是这种情况,那么服务器将在内部抛出带有消息 "Invalid length for a Base-64 char array or string."FormatException,这反过来会导致 HTTP 状态代码 500(内部服务器错误)。

【讨论】:

  • 我还没到解码阶段。我正处于从提琴手传递不同长度的字符串并中断进程的阶段,执行命中api中方法的顶部以查看对象是否具有值。您是说服务器(在这种情况下为 iis)会在我从提琴手发送请求时并在它到达 api 之前尝试自己进行解码!?
猜你喜欢
  • 2014-02-03
  • 1970-01-01
  • 2011-03-23
  • 2012-03-21
  • 1970-01-01
  • 2010-09-11
  • 2012-03-22
  • 2011-09-04
  • 2019-05-20
相关资源
最近更新 更多