0

メソッドを呼び出す Web API 2 コントローラーに行き詰まってPUTいますが、メソッドが許可されていないというエラーが表示されます。Web.configWebDAV がメソッドをブロックしないようにするコード行を追加しました。私はすべてを試しましたが、うまくいきません。おそらく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);

このコードの前に、クライアントを http として定義し、必要なプロパティを追加し、他のコントローラー メソッド (GET、POST、DELETE) を呼び出しましたが、それらはすべて機能します。これは Windows フォーム アプリからのもので、Postman からも呼び出していますが、同じエラーが発生します。

4

2 に答える 2

2

[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 呼び出しから、期待されるのHttpResponseMessageasync Task<HttpResponseMessage>

HttpRequest を作成するためのコード:

response = await client.PutAsJsonAsync("api/article/2/put", articleModel);
于 2016-06-20T08:08:11.210 に答える
1

[System.Web.Http.HttpPut]メソッドに属性を追加し ます。

于 2016-06-20T08:06:10.973 に答える