将ASMX服务加载为XMLDocument

时间:2012-05-04 14:22:51

标签: c# web-services asmx xmldocument

有人能帮助我吗?我将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消费服务

enter image description here

3 个答案:

答案 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