可以通过url查询字符串使用参数调用ASMX服务吗?

时间:2010-01-05 15:06:19

标签: asmx

我有一个asmx服务,它接受一个int参数。我可以打开服务的URL并查看服务描述屏幕。从这里我可以将查询参数输入到表单中并调用Web服务。

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

这不起作用:

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

有什么想法吗?由于某些部署问题,我真的希望能够通过标准链接执行此操作。我是否必须在普通的aspx页面中包装请求?

2 个答案:

答案 0 :(得分:45)

您可以修改您的方法以允许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请求的方法确实存在一些安全风险。根据{{​​3}}:

  

UseHttpGet 属性设置为    true 可能会给您带来安全风险   如果你在工作,你的申请   敏感数据或交易。   在GET请求中,消息是   由浏览器编码到URL中   因此是一个更容易的目标   篡改。

答案 1 :(得分:9)

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