我有一个asmx服务,它接受一个整数参数。我可以打开服务的URL并查看服务描述屏幕。从这里,我可以将查询参数输入表单并调用Web服务。
有没有办法直接从URL/查询字符串调用Web服务?
这个方法不起作用:
http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1
有什么想法吗?由于一些部署问题,我真的很想能够通过标准链接完成此操作。我是否需要将请求包装在普通的aspx页面中?
我有一个asmx服务,它接受一个整数参数。我可以打开服务的URL并查看服务描述屏幕。从这里,我可以将查询参数输入表单并调用Web服务。
有没有办法直接从URL/查询字符串调用Web服务?
这个方法不起作用:
http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1
有什么想法吗?由于一些部署问题,我真的很想能够通过标准链接完成此操作。我是否需要将请求包装在普通的aspx页面中?
[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文档中UseHttpGet的说明:
如果您正在处理敏感数据或交易,则将 UseHttpGet 属性设置为 true 可能会对应用程序构成安全风险。 在GET请求中,消息由浏览器编码到URL中,因此更容易受到篡改。
ASMX Web服务使用SOAP。 SOAP请求仅使用POST调用方法。您需要在aspx页面中生成代理客户端来调用Web服务。如果您确实需要使用GET动词调用Web服务,则可能需要使用不同的方法,例如WCF REST。