Asp.net 是否可以将某些ASMX web服务方法限制为仅获取或发布?

Asp.net 是否可以将某些ASMX web服务方法限制为仅获取或发布?,asp.net,rest,asmx,Asp.net,Rest,Asmx,不幸的是,我正在使用ASP.NET Web表单构建一个(遗留)项目。我无法将其迁移到ASP.NET MVC(因此请不要建议将其作为答案) 我希望创建一个API来公开我们的一些数据。所以,我做了一个网络服务。非常简单的东西。但是,对于前几个方法,我只希望将它们公开为HTTP-GET。对于我的最后一个方法,我只希望将其公开为HTTP-POST 我非常习惯使用ASP.NETMVC,这就是为什么我真的喜欢这种RESTful编程方式,但我不知道如何使用我的web服务来实现这一点 我正在使用一个URL重写器

不幸的是,我正在使用ASP.NET Web表单构建一个(遗留)项目。我无法将其迁移到ASP.NET MVC(因此请不要建议将其作为答案)

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

我非常习惯使用ASP.NETMVC,这就是为什么我真的喜欢这种RESTful编程方式,但我不知道如何使用我的web服务来实现这一点

我正在使用一个URL重写器,以便处理api的“RESTfull”消耗(虽然很蹩脚,但它可以工作)


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

我很确定.net web服务类只接受已发布的变量。

您可以使用:



要限制单个方法发布,可以在运行时测试HttpContext.Current.Request.HttpMethod。

在方法声明上方添加以下内容:

[ScriptMethod(UseHttpGet = false)]

这将强制该方法仅响应POST。如果希望方法响应GET,请设置为true。这里的问题是,您需要使用ASP.NET 3.5或ASP.NET 2.0的ASP.NET AJAX扩展。你可以阅读更多关于这个的内容

不,它接受GET、POST和SOAP(编辑:即使SOAP不是HTTP动词)。但是,我如何限制一种方法。。如果GET和POST都已启用?该配置设置适用于所有web方法……您可以在运行时测试HttpMethod属性。更新的答案。如果我将其设置为TRUE,是否意味着POST不可用?这将限制整个服务进行POST,而不是像我认为他所要求的那样只使用一个方法。ScriptMethod属性可以针对每个方法进行设置和更改,而不仅仅是针对整个类。这听起来不像REST。URL重写与REST无关,也与HTTP谓词无关。如果[rest]标记不准确,请将其删除。
[ScriptMethod(UseHttpGet = false)]