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

Ale*_*lex 22 asmx

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

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

这不起作用:

HTTP://本地主机:4653/MyService.asmx OP = MyWebMethod&intParameter = 1

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

Sco*_*son 48

您可以修改您的方法以允许HTTP GET请求,这反过来应该执行您正在寻找的内容,如下所示:

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

并编辑web.config:

<system.web>
<webServices>
  <protocols>
    <add name="HttpGet"/>
  </protocols>
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:请注意,这种执行GET请求的方法确实存在一些安全风险.根据UseHttpGetMSDN文档:

如果您正在处理敏感数据或事务,则将UseHttpGet属性设置为 true可能会对您的应用程序造成安全风险.在GET请求中,消息由浏览器编码到URL中,因此更容易被篡改.

  • 如果您将以下内容添加到您的web.config <webServices> <protocols> <add name ="HttpGet"/> <add name ="HttpPost"/> </ protocols> </ webServices> (10认同)
  • 添加Web配置是我所需要的.甚至不需要装饰方法. (8认同)

Dar*_*rov 10

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