Webclient.UploadString抛出内部服务器错误

时间:2014-10-06 12:34:09

标签: c# .net webclient

我使用Web Client UploadString将Xml作为字符串发送到我创建的另一台服务器。 调用UploadString时,我得到一个(500内部服务器错误)。我正在调试可能会抛出异常但仍然没有到达的服务! (还有一个日志来证明它)。 我通过以下方式使用Web客户端:

using(WebClient webclient = new WebClient())
{
    webclient.Encoding = UTF8Encoding.UTF8;
    webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    webclient.UseDefaultCredentials = true;
    webclient.UploadString(url, stringToUpload);
}

我知道以下事实:

  1. stringToUpload.Length = 4379663。
  2. 如果我发送string.Empty我确实得到了服务我试图将字符串上传到。
  3. 我发送的字符串大小是否有限制?如果是这样,我该怎么做才能启用此发送,还是有另一种方法来处理这种情况? 此外,如果服务器真的不是内部服务器错误,为什么会抛出500?

    由于

3 个答案:

答案 0 :(得分:0)

是的,当请求发送到asp.net时有一个限制:

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="1048576" />
    </system.web>
</configuration>

(在iis7上是:

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

检查您的远程服务,看看您的请求长度是否过长。还要注意请求超时,如果花费太长时间,可能会削减上传。有一些解决方案可以回避这个问题:分块您的请求,或使用能够直接处理它的框架。

从服务器的角度来看,它被视为内部错误,但您可以通过将错误按摩到something else来改变行为

答案 1 :(得分:0)

增加执行时间attribut:

<system.web>
    <httpRuntime executionTimeout="200" maxRequestLength="1048576" />
</system.web>

答案 2 :(得分:0)

尝试先发送空白字符串,然后再发送实际字符串。

plot(Xfinal)