1. ホーム
  2. c#

[解決済み] 405 メソッドが許可されていない Web API

2023-02-08 01:31:56

質問

このエラーは非常に一般的で、すべての解決策を試しましたが、どれもうまくいきませんでした。私はコントロール パネルで WebDAV 公開を無効にし、Web 設定ファイルにこれを追加しました。

  <handlers>
  <remove name="WebDAV"/>
  </handlers>
  <modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
  </modules>

エラーはまだ続いています。これはコントローラです。

   static readonly IProductRepository repository = new ProductRepository();

    public Product Put(Product p)
    {
        return repository.Add(p);
    }

メソッドの実装です。

 public Product Add(Product item)
    {
        if (item == null)
        {
            throw new ArgumentNullException("item");
        }
        item.Id = _nextId++;
        products.Add(item);
        return item;
    }

そして、ここで例外が発生します。

client.BaseAddress = new Uri("http://localhost:5106/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));      
var response = await client.PostAsJsonAsync("api/products", product);//405 exception

何か提案はありますか?

どのように解決するのですか?

クライアントからPOSTしている。

await client.PostAsJsonAsync("api/products", product);

をPUTしない。

Web API のメソッドは PUT リクエストのみを受け付けます。

だから

await client.PutAsJsonAsync("api/products", product);