我有一个asmx服务,它接受一个int参数。我可以打开服务的URL并查看服务描述屏幕。从这里我可以将查询参数输入到表单中并调用Web服务。
有没有办法直接从URL /查询字符串调用Web服务?
这不起作用:
http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1
有什么想法吗?由于某些部署问题,我真的希望能够通过标准链接执行此操作。我是否必须在普通的aspx页面中包装请求?
答案 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。