正如我found here,我可以更改webconfig以允许/禁止webservices上的方法。
我只需要一个方法来成为GET,而对于其他方法它应该是一个POST,有没有办法只配置一个方法(或者如果没有其他方法可能是webservice)来接受GET请求?我在IIS7上。
答案 0 :(得分:1)
取决于网络服务器。
例如,您可以在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
答案 1 :(得分:1)
您可以通过在IIS中或通过web.config中定义的httpHandler映射更改处理程序映射来完成此操作。
或者你可以让一个HttpModule来做它。
但是,既然你已经在使用asp.net(从你的标签判断)并且你只有一个例外,那么更简单的方法可能只是在那个级别上做。如果没有,那么从HttpModule中执行此操作的逻辑就大致相同。
在你的基于页面的类中(如果你还没有在System.Web.UI.Control.Page和你自己的页面之间定义一个抽象类,它可能值得一看,它是一个放置常用的方便的地方方法)放置一个在主页面加载处理程序之前调用的虚拟成员(例如,有一个名为OnLoad的方法调用它,然后调用你的“实际”页面加载方法)。
在此方法中,检查使用的http方法,如果不正确,请将状态代码设置为405,输出奖励标记的错误页面,然后停止所有处理。
在允许获取,覆盖和更改您检查的方法的页面中。
如果您的类结构不允许轻松完成,那么HttpModule方法将更容易。在这里,您必须检查URI以了解允许哪种方法,但其余方法几乎相同。