GetResponse()的500内部服务器错误

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我有一个流量很大的ASPX页面,根据每个用户的请求调用一个Web服务如下。

string uri = "Path.asmx";
string soap = "soap xml string";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Headers.Add("SOAPAction", "\"http://xxxxxx"");
request.ContentType = "text/xml;charset=\"utf-8\"";
request.Accept = "text/xml";
request.Method = "POST";

using (Stream stm = request.GetRequestStream())
{
    using (StreamWriter stmw = new StreamWriter(stm))
    {
        stmw.Write(soap);
    }
}
WebResponse response = request.GetResponse();
response.close();

一切正常,但有时我会遇到以下错误。

远程服务器返回一个错误:(500)System.Net.HttpWebRequest.GetResponse()

有没有人知道这个错误,或者谁能告诉我我做错了什么。

谢谢

提问于
用户回答回答于

我会说你的代码是好的,至少是调用web服务的部分。该错误似乎是在实际的Web服务中。

要从Web服务器获取错误,请添加一个try catch并捕获一个WebException。WebException有一个名为Response的属性,它是一个HttpResponse。然后你可以记录返回的任何内容,并上传代码。稍后在日志中检查并查看实际返回的内容。

用户回答回答于

对我来说,这个错误是因为我有2个Web API操作具有完全相同的签名并且两个具有相同的动词,HttpPost我所做的是将其中一个动词(用于更新的动词)更改为PUT,并且错误被删除。以下在我的catch语句帮助解决问题的根源:

catch (WebException webex)
{
                WebResponse errResp = webex.Response;
                using (Stream respStream = errResp.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(respStream);
                    string text = reader.ReadToEnd();
                }
}

扫码关注云+社区