Fiddler 或 C# 中 Post 的限制是什么

What is limit of Post in Fiddler or C#

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

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

我注意到如果我在 fiddler 中的箭头处向我的 post 增加 1 个字符,object 变为空

谁的限制使 post 请求无效,Fiddler 或 C# OData Api?事实上,我的图像 body 比那些长度要多得多。它可以达到 10 毫克,我应该怎么做才能发送大图像并能够测试在 fiddler 中发送它们的二进制文件!?

您的请求可能超出了 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 字符串中,填充将是错误的,因此解码将失败。

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