[英]How do I allow the GET request for only one method or webservice?
正如我在这里发现的那样 ,我可以更改webconfig以允许/禁止webservices中的方法。
我只需要一种方法成为GET,对于其他方法则应该是POST,是否有一种方法可以仅配置一种方法(如果没有其他方法,则可以配置Web服务)以接受GET请求? 我在IIS7上。
取决于Web服务器。
例如,您可以针对Apache中的某些请求返回错误。
使用Limit
指令:
<Directory />
Options All
AllowOverride All
<Limit POST PUT DELETE CONNECT PROPFIND PROPPATCH>
# Require valid-user
Deny from all
</Limit>
</Directory>
编辑 -刚刚找到有关此文档: http : //httpd.apache.org/docs/2.0/mod/core.html#limit
您可以通过在IIS中或通过web.config中定义的httpHandler映射更改处理程序映射来完成此操作。
或者,您可以让HttpModule做到这一点。
但是,由于您已经在使用asp.net(通过标签进行判断),并且只有一个例外,所以一种更简单的方法可能就是在该级别上进行。 如果不是,则从HttpModule执行此操作的逻辑几乎相同。
在您的页面基类中(如果尚未在System.Web.UI.Control.Page和您自己的页面之间定义抽象类,可能值得一看,这是放置常用方法的方便位置)一个在主页面加载处理程序之前被调用的虚拟成员(例如,有一个名为OnLoad的方法先调用此方法,然后再调用“真实”页面加载方法)。
在此方法中,检查使用的http方法,如果不正确,则将状态代码设置为405,输出错误页面以显示加分标记,然后停止所有处理。
在允许获取,覆盖和更改检查方法的页面中。
如果您的类结构不允许轻松完成此操作,则HttpModule方法将更容易。 在这里,您必须检查URI才能知道允许使用哪种方法,但是其余的几乎相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.