[英]Replace WebClient.UploadString() to HttpClient.PostAsync
[英]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);
}
我知道以下事实:
我发送的字符串大小有限制吗? 如果是这样,我应该怎么做才能启用此发送或是否有其他方法来处理这种情况? 此外,如果服务器确实不是内部服务器错误,为什么会抛出 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.