0

有人能帮我吗?我将 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 请求的

是什么导致了问题,我该如何解决。

PS我尝试使用这种方法,因为在共享主机上他们突然停止支持跨域Web服务消费,所以我不能通过ajax消费服务

在此处输入图像描述

4

3 回答 3

1

任何以“5”开头的 HTTP 错误代码都是服务器错误。这意味着它是您的服务内部未处理的异常。异常可能只有当你以这种方式访问​​服务时才会发生,但异常肯定是在服务中。

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

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

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

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

于 2012-05-04T15:05:50.280 回答
0

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

你可以在这里阅读:http: //msdn.microsoft.com/en-US/library/y92e0td0.aspx

如果您出于某种原因不能使用此方法,我猜(这是理论上的)您可以使用您的 Web 服务 url 声明一个 HttpRequest 并将响应作为字符串

于 2012-05-04T14:35:44.220 回答
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 远程服务器返回错误:(500)内部服务器错误

于 2013-04-25T14:14:21.400 回答