2010-01-05 42 views
18

我有一个只需要一个int参数的asmx服务。我可以打开该服务的URL并查看服务描述屏幕。从这里我可以将查询参数输入到表单中并调用Web服务。可能通过url查询字符串通过参数调用ASMX服务?

有什么办法直接从URL /查询字符串调用Web服务吗?

这并不工作:

http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1

任何想法?由于某些部署问题,我真的希望能够从标准链接执行此操作。我将不得不在正常的aspx页面中包装请求吗?

回答

39

可以装饰你的方法,以允许HTTP GET请求,这应该反过来做你要找什么,像这样:

[WebMethod] 
[ScriptMethod(UseHttpGet=true)] 
public string MyNiftyMethod(int myint) 
{ 
    // ... code here 
} 

而且编辑web.config:

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

然后你就可以调用此方法像这样:

http://mysite.com/Service.asmx/MyNiftyMethod?myint=12345

编辑:请注意,执行GET请求的这种方法确实带有一些安全风险。按照MSDN documentation for UseHttpGet

设置UseHttpGet属性 真正,如果你是敏感数据或交易工作 可能带来的 您的应用程序存在安全隐患。 在GET请求中,消息是 由浏览器编码为URL ,因此更容易被篡改为 目标。

+0

非常好,我会给你一个镜头。 – Alex 2010-01-05 15:30:07

+0

好吧,这没有工作,得到完全相同的错误。 – Alex 2010-01-05 18:12:25

+0

不工作... – 2010-03-23 18:10:06

9

ASMX Web服务使用SOAP。 SOAP请求仅使用POST来调用方法。您需要在您的aspx页面中生成一个代理客户端来调用Web服务。如果您确实需要使用GET动词来调用Web服务,则可能需要使用其他方法,例如WCF REST

+0

这很简单,适用于我的情况。 – Alex 2010-01-07 21:33:28

相关问题