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

C# Webclient.UploadString引发内部服务器错误,c#,.net,webclient,C#,.net,Webclient,我使用Web客户端上传字符串将Xml作为字符串发送到我创建的另一台服务器。 调用UploadString时,我得到一个(500内部服务器错误)。我正在调试服务,该服务可能会引发异常,但我从未到达那里!(还有一份日志可以证明这一点)。 Im以以下方式使用web客户端: using(WebClient webclient = new WebClient()) { webclient.Encoding = UTF8Encoding.UTF8; webclient.Headers[Htt

我使用Web客户端上传字符串将Xml作为字符串发送到我创建的另一台服务器。 调用UploadString时,我得到一个(500内部服务器错误)。我正在调试服务,该服务可能会引发异常,但我从未到达那里!(还有一份日志可以证明这一点)。 Im以以下方式使用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);
}
我知道以下事实:

  • stringToUpload.Length=4399663
  • 如果我发送string.Empty,我将访问我试图将字符串上载到的服务
  • Im发送的字符串大小是否有限制?如果是,我应该怎么做才能启用此发送,或者是否有其他方法来处理此情况? 此外,如果不是内部服务器错误,为什么服务器抛出500


    谢谢

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

    <configuration>
        <system.web>
            <httpRuntime maxRequestLength="1048576" />
        </system.web>
    </configuration>
    
    
    
    (关于iis7,它是:

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

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


    从服务器的角度来看,这是一个内部错误,但是您可以通过将错误转换为增加executiontimeout属性来改变行为:

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

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

    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);
     }