繁体   English   中英

Web API 2-现在允许使用方法(405)进行PUT

[英]Web API 2 - Method now allowed(405) for PUT

我被Web API 2控制器困住了,从中我调用PUT方法,它给我一个错误,提示该方法是不允许的。 我在Web.config中添加了Web.config行代码,以防止WebDAV阻止方法。 我尝试了一切,但没有用。 我的控制器中的PUT方法可能有问题。

这是我的控制器代码:

public IHttpActionResult Put(int id, [FromBody]ArticleModel model) {
    var article = _articleService.UpdateArticle(model);
    return Ok<ArticleModel>(article);
}

这是我称之为put的代码:

  response = await client.PutAsJsonAsync("api/article/2", articleModel);

在此代码之前,我将client定义为http并添加了所需的属性,并调用了其他控制器方法(GET,POST,DELETE),它们都可以工作。 这是从Windows Form应用程序发出的,我也从Postman打电话,但仍然是相同的错误。

[HttpPut][RoutePrefix("api/yourcontroller")][Route("put")]属性添加到控制器方法

例:

[RoutePrefix("api/yourcontroller")]
public class YourController
{
 [HttpPut]   
 [Route("{id}/put")]
 public IHttpActionResult Put(int id, [FromBody]ArticleModel model) {
   var article = _articleService.UpdateArticle(model);
   return Ok<ArticleModel>(article);
 }
}

编辑1

public class YourController
{
 [HttpPut]   
 [Route("api/article/{id}/put")]
 public async Task<HttpResponseMessage> Put(int id, [FromBody]ArticleModel model) {
   var article = _articleService.UpdateArticle(model);
   return Ok<ArticleModel>(article);
 }
}

从您的HttpRequest调用看来,这似乎是一个HttpResponseMessage因此将返回类型更改为async Task<HttpResponseMessage>

制作HttpRequest的代码:

response = await client.PutAsJsonAsync("api/article/2/put", articleModel);

[System.Web.Http.HttpPut]属性添加到您的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM