将操作命名为 Get... 使其成为 HttpGet,而不管 HttpPostAttribute。我如何强制它成为 HttpPost?
Naming an action Get... makes it a HttpGet, in spite of HttpPostAttribute. How do I force it to be HttpPost?
我的控制器中有以下代码,基于 ApiController。 (插入到 VS2013 MVC 模板化项目中)。
如果我将操作命名为 GetUniquePoSId,则无法使用 POST 调用它。将名称更改为 FetchUniquePoSId 使其成为可能。
我想 select 我的动作可以自由命名;谁知道如何禁用此行为?
谢谢,
安德斯,丹麦
[System.Web.Mvc.HttpPost]
public HttpResponseMessage FetchUniquePoSId([FromBody]JToken token)
{
var validationMessage = _jsonValidator.Validate(token, new string[] { "MerchantId" });
if (validationMessage.ValidationResult != ValidationResultEnum.Ok)
return MpBadRequest(validationMessage);
// Otherwise OK.
return Request.CreateResponse<JToken>(JToken.Parse("{'MobilePayPosId': 'A1234567-3AEA-4069-A2DD-123456789012'}"));
}
问题是您在 Web api 项目中使用 System.Web.Mvc
命名空间的 HttpPost
属性,这就是它对您不起作用的原因(System.Web.Mvc命名空间只能由 asp.net mvc 控制器使用。
您应该使用用于 Web api 项目的 System.Web.Http
命名空间。
[System.Web.Http.HttpPost]
public HttpResponseMessage FetchUniquePoSId([FromBody]JToken token)
{
//handling request
}
我的控制器中有以下代码,基于 ApiController。 (插入到 VS2013 MVC 模板化项目中)。
如果我将操作命名为 GetUniquePoSId,则无法使用 POST 调用它。将名称更改为 FetchUniquePoSId 使其成为可能。
我想 select 我的动作可以自由命名;谁知道如何禁用此行为?
谢谢, 安德斯,丹麦
[System.Web.Mvc.HttpPost]
public HttpResponseMessage FetchUniquePoSId([FromBody]JToken token)
{
var validationMessage = _jsonValidator.Validate(token, new string[] { "MerchantId" });
if (validationMessage.ValidationResult != ValidationResultEnum.Ok)
return MpBadRequest(validationMessage);
// Otherwise OK.
return Request.CreateResponse<JToken>(JToken.Parse("{'MobilePayPosId': 'A1234567-3AEA-4069-A2DD-123456789012'}"));
}
问题是您在 Web api 项目中使用 System.Web.Mvc
命名空间的 HttpPost
属性,这就是它对您不起作用的原因(System.Web.Mvc命名空间只能由 asp.net mvc 控制器使用。
您应该使用用于 Web api 项目的 System.Web.Http
命名空间。
[System.Web.Http.HttpPost]
public HttpResponseMessage FetchUniquePoSId([FromBody]JToken token)
{
//handling request
}