有人能帮助我吗?我将ASMX加载为XMLDocument,我使用以下代码:
string url = "http://www.*******.com/WebService.asmx/Test";
wsResponse.Load(url);
string XMLDocument = wsResponse.InnerXml;
Response.ContentType = "text/xml";
Response.Write(XMLDocument);
在生产服务器上我收到了SERVER INTERNAL错误,它在共享主机上。在本地主机上,Web服务已成功使用。 Web服务返回一个简单的字符串作为“服务测试” 该服务是HTTP GET请求
什么可能导致问题,我该如何解决。
P.S。我尝试使用这种方法,因为在共享主机上他们突然停止支持跨域Web服务消费,所以我不能通过ajax消费服务
答案 0 :(得分:1)
任何以“5”开头的HTTP错误代码都是服务器错误。这意味着它是您服务中未处理的异常。只有在以这种方式访问服务时才会发生异常,但是服务中肯定存在异常。
查看应用程序事件日志以查看是否记录了异常的详细信息。否则,调试服务,或者查看服务可能记录异常的任何其他位置。
仅供参考,当您以这种方式访问服务时,您正在使用HTTP GET动词。在服务的web.config中,您需要启用HttpGet协议。它默认是禁用的,您需要启用它:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
</system.web>
</configuration>
最后,我只是想确保您知道ASMX技术是一项传统技术,不应该用于新开发。
答案 1 :(得分:0)
当然,这是一种查询Web服务的奇怪方式。通常,您添加服务引用/代理类并在web.config中指定服务端点。
您可以在此处阅读:http://msdn.microsoft.com/en-US/library/y92e0td0.aspx
如果您出于某种原因无法使用此方法,我猜(这是理论上的)您可以使用您的Web服务URL声明HttpRequest并将响应作为字符串
答案 2 :(得分:0)
似乎问题出在远程服务器上,因为它需要有效的用户代理。
以下是修复:
var m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it";
string xmlStr;
using (var wc = new WebClient())
{
wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
TaskCompletionSource<string> tcs = new TaskCompletionSource<string>();
xmlStr = wc.DownloadString(m_strFilePath);
}
xdoc.LoadXml(xmlStr);
以下是Stackoverflow网站上的文章: webclient The remote server returned an error: (500) Internal Server Error