Kri*_*hna 24 .net c# asp.net web-services web-applications
我有一个繁重的流量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();
Run Code Online (Sandbox Code Playgroud)
一切都很好,但有时我得到以下错误.
远程服务器返回错误:(500)内部服务器错误.在System.Net.HttpWebRequest.GetResponse()
有没有人对这个错误有任何想法,或者有人告诉我,如果我做错了.
Moh*_*and 47
对我来说,这个错误发生是因为我有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();
}
}
Run Code Online (Sandbox Code Playgroud)
Fal*_*tar 21
从那个错误,我会说你的代码很好,至少是调用webservice的部分.该错误似乎在实际的Web服务中.
要从Web服务器获取错误,请添加try catch并捕获WebException.WebException有一个名为Response的属性,它是一个HttpResponse.然后,您可以记录返回的任何内容,并上传代码.稍后在日志中查看并查看实际返回的内容.
最后,我使用以下代码摆脱了内部服务器错误消息。不确定是否有另一种方法来实现它。
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);
}
}
using (WebResponse webResponse = request.GetResponse())
{
}
Run Code Online (Sandbox Code Playgroud)
您是否尝试为您的请求指定UserAgent?例如:
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152844 次 |
| 最近记录: |