获取响应状态代码并不表示成功:如果文件太大,则为500

时间:2015-08-10 17:42:08

标签: c# asp.net .net iis-7 dotnet-httpclient

我正在尝试使用HttpClient向我的本地IIS服务器发送大量XML数据(~10mb),但总是得到500错误:Response status code does not indicate success: 500

StringContent content = new StringContent(xmlData, Encoding.UTF8, "application/xml");

var request = new HttpRequestMessage(HttpMethod.Post, redirectedAddress) { Content = content };

HttpClient client = new HttpClient();
        client.SendAsync(request).ContinueWith(
          postTask =>
          {
              var status = postTask.Result.EnsureSuccessStatusCode();
          });

所以EnsureSuccessStatusCode方法会抛出500错误,但是如果我发送的文件要小得多,比如50kb,那么它没问题。

我做了一些研究,人们建议在我的IIS配置中增加数据的最大大小,所以我做了:

<system.web>
<compilation targetFramework="4.5" />
<httpRuntime executionTimeout="360" 
             maxRequestLength="65536"
             useFullyQualifiedRedirectUrl="false"
             minFreeThreads="8"
             minLocalRequestFreeThreads="4"
             appRequestQueueLimit="100"
             enableVersionHeader="true" />

<system.webServer>
<security >
  <requestFiltering>
    <requestLimits maxAllowedContentLength="1000000000000" />
  </requestFiltering>
</security>
</system.webServer>

但仍然没有运气,一旦数据大小超过5mb,我就得到了例外。还有什么我需要设置的吗?

1 个答案:

答案 0 :(得分:1)

您还需要增加maxRequestLength。目前设置为65536,大约6 MB,你需要加倍,以满足您的需求。有关详细信息,请参阅此处:https://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength(v=vs.110).aspx