C# 将ASMX服务作为XMLDocument加载

C# 将ASMX服务作为XMLDocument加载,c#,web-services,asmx,xmldocument,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); 在生产服务器上

有人能帮我吗?我将ASMX作为XMLDocument加载,我使用以下代码:

string url = "http://www.*******.com/WebService.asmx/Test";
    wsResponse.Load(url);
    string XMLDocument = wsResponse.InnerXml;
    Response.ContentType = "text/xml";
    Response.Write(XMLDocument);
在生产服务器上,我收到服务器内部错误,它位于共享主机上。在本地主机上,成功使用web服务。 web服务返回一个简单字符串作为“服务测试” 该服务由HTTP GET请求

是什么导致了问题,我如何修复它

另外,我尝试使用这种方法,因为在共享主机上,它们突然停止支持跨域web服务消费,所以我无法通过ajax消费服务


这无疑是查询web服务的一种奇怪方式。通常,您会添加一个服务引用/代理类,并在web.config中指定服务端点

你可以在这里读到:


如果出于任何原因不能使用此方法,我想(这是理论上的)您可以使用web服务url声明一个HttpRequest,并以字符串形式获得响应,任何以“5”开头的HTTP错误代码都是服务器错误。这意味着它是服务内部未处理的异常。只有当您以这种方式访问服务时,异常才可能发生,但异常肯定存在于服务中

查看应用程序事件日志,查看是否记录了异常的详细信息。否则,要么调试服务,要么查看服务可能记录异常的其他地方

仅供参考,当您以这种方式访问服务时,您使用的是HTTP GET动词。在服务的web.config中,需要启用HttpGet协议。默认情况下,它处于禁用状态,您需要启用它:

<configuration>
    <system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
        </protocols>
    </webServices>
    </system.web>
</configuration>


最后,我只想确保您知道ASMX技术是一项遗留技术,不应用于新的开发。

问题似乎出在远程服务器上,因为它需要一个有效的用户代理。

以下是修复方法:

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);
var m_strFilePath=”http://www.google.com/ig/api?weather=12414&hl=it";
字符串xmlStr;
使用(var wc=new WebClient())
{
添加(“用户代理”、“Mozilla/4.0(兼容;MSIE6.0;WindowsNT5.2;.NETCLR1.0.3705;”);
TaskCompletionSource tcs=新的TaskCompletionSource();
xmlStr=wc.DownloadString(m_strFilePath);
}
LoadXml(xmlStr);
以下是Stackoverflow网站上的文章:

10x答案是肯定的,我知道asmx是一项古老的技术,但该项目是在很久以前建立的,我不会用最小的努力来修复它。“HttpGet”也在web.config中设置。我在主机面板上查看了一下,但找不到访问应用程序日志的位置,无论如何,我会询问suuport。