[英]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.