不幸的是,我正在使用ASP.NET Web Forms构建的(遗留)项目上做一些工作。我无法将其迁移到ASP.NET MVC(所以请不要建议作为答案)。
我希望创建一个API来公开我们的一些数据。所以,我去了头,做了一个网络服务。非常简单的东西。但是,对于前几种方法,我希望仅将它们作为HTTP-GET公开。对于我的上一个方法,我希望仅将其公开为HTTP-POST。
我已经习惯使用ASP.NET MVC了,这就是为什么我真的很喜欢这种RESTful编程方式,但我不确定如何使用我的Web服务呢?
我正在使用URL重写器,因此处理api的'RESTfull'消耗(它很蹩脚,但它有效)。
那么,有没有办法阻止Web服务只接受HTTP动词?
答案 0 :(得分:4)
在方法声明上面添加以下内容:
[ScriptMethod(UseHttpGet = false)]
这会强制该方法仅响应POST。如果希望方法响应GET,则设置为true。这里的问题是你需要使用ASP.NET 3.5或ASP.NET AJAX Extensions for ASP.NET 2.0。您可以阅读有关此here
的更多信息答案 1 :(得分:1)
您可以enable GET in the web.config使用:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
要将单个方法限制为POST,可以在运行时测试HttpContext.Current.Request.HttpMethod。
答案 2 :(得分:-3)
我很确定.net网络服务类只接受发布的变量。