假设我在以下地址有一个asmx网络服务: http://localhost/BudgetWeb/Service.asmx
此Web服务具有带以下签名的Web方法:
string GetValue(string key)
此GetValue方法返回如下字符串:
<?xml version=\"1.0\" encoding=\"utf-8\" ?><value>250.00</value>
如果我想这样做怎么办:
XDocument doc = XDocument.Load("http://localhost/BudgetWeb/Service.asmx?op=GetValue&key=key1")
这不起作用,我很确定XDocument.Load实际上并没有在服务器上调用Web方法。我认为它希望uri指向一个可以加载的文件。要调用Web方法,我想我必须有一个Web代理类,并且必须使用它来调用string GetValue(string key)
,然后我可以使用从Web代理类返回的值传递给XDocument 。加载方法。
我的理解是否正确,或者XDocument.Load是否有办法在服务器上实际调用Web方法?
答案 0 :(得分:5)
尝试使用它:
XDocument doc = XDocument.Load(
"http://localhost/BudgetWeb/Service.asmx/GetValue?key=key1");
编辑:刚想通了:你使用的是无效的URI:
http://localhost/BudgetWeb/Service.asmx?op=GetValue&key=key1
应该是
http://localhost/BudgetWeb/Service.asmx/GetValue?key=key1
我正在使用此代码段:
string uri = "http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=MSFT";
XDocument doc1 = XDocument.Load(uri);
Console.WriteLine(doc1.Root.Value); // <StockQuotes><Stock><Symbol>MSFT...
答案 1 :(得分:3)
好的,我发现了这个问题。在Web服务的web.config中,您必须添加以下内容:
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
感谢大家的建议,我真的很感激,尤其是鲁本斯法里亚斯,他的工作实例让我走上正轨。