[HttpPost]和[WebMethod]有什么区别?

时间:2014-01-28 06:42:19

标签: c# asp.net asp.net-mvc

这两个方法属性在功能上有哪些主要区别?

3 个答案:

答案 0 :(得分:5)

[HttpPost]是一个在ASP.Net MVC中修饰控制器或控制器动作的属性。如果类型为“POST”,您将使用它仅允许请求输入此操作方法。

通常看起来像这样:

[HttpPost]
public ActionResult MyControllerAction()
{
  // only can get here if httprequest was a "POST"
}

[WebMethod]属性用于装饰通常用于制作Web服务的旧学校.asmx页面上的方法。将[WebMethod]属性附加到Public方法表示您希望将该方法作为XML Web服务的一部分公开。

通常在.asmx页面上看起来像这样:

public class Service1 : System.Web.Services.WebService
{ 
    [WebMethod] // exposes XML Web Service Method
    public DataSet IAmAWebServiceMethod()
    {
       //implementation code
    }
}

它们不具有可比性,并且完全不同的操作。一个处理Web应用程序的“POST”请求,另一个处理XML Web服务方法。

答案 1 :(得分:1)

他们之间没有比较。 [WebMethod]是旧版ASMX Web服务技术的一部分,不应用于新开发。

答案 2 :(得分:0)

我认为这些主题已经有很多讨论 它们完全不同,请查看这些链接,了解两者的基本概念

HttpPost vs HttpGet attributes in MVC: Why use HttpPost?

what is web method attribute in web service?