繁体   English   中英

Webclient.UploadString 引发内部服务器错误

[英]Webclient.UploadString throws Internal server error

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

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 我确实会进入我试图将字符串上传到的服务。

我发送的字符串大小有限制吗? 如果是这样,我应该怎么做才能启用此发送或是否有其他方法来处理这种情况? 此外,如果服务器确实不是内部服务器错误,为什么会抛出 500?

谢谢

是的,将请求发送到 asp.net 时存在限制:

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

(在 iis7 上是:

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

)

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

从服务器的角度来看,它是一个内部错误,但您也许可以通过将错误按摩到其他内容来改变行为

增加执行超时属性:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM