是否可以将某些ASMX Web服务方法限制为仅限GET或POST?

时间:2009-08-14 04:53:34

标签: asp.net rest asmx

不幸的是,我正在使用ASP.NET Web Forms构建的(遗留)项目上做一些工作。我无法将其迁移到ASP.NET MVC(所以请不要建议作为答案)。

我希望创建一个API来公开我们的一些数据。所以,我去了头,做了一个网络服务。非常简单的东西。但是,对于前几种方法,我希望仅将它们作为HTTP-GET公开。对于我的上一个方法,我希望仅将其公开为HTTP-POST。

我已经习惯使用ASP.NET MVC了,这就是为什么我真的很喜欢这种RESTful编程方式,但我不确定如何使用我的Web服务呢?

我正在使用URL重写器,因此处理api的'RESTfull'消耗(它很蹩脚,但它有效)。

那么,有没有办法阻止Web服务只接受HTTP动词?

3 个答案:

答案 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网络服务类只接受发布的变量。