web-dev-qa-db-ja.com

HTTP DELETE動詞が405エラーを返すのはなぜですか-IIS 7.5で実行されているRESTful WCFサービスに許可されていないメソッドですか?

誰でもこれに光を当てることができますか?今日は丸一日無駄になっているように感じます。これを行う方法についての情報のスクラップをインターネットで探して探しています。非常にシンプルなWCF RESTfulサービスを作成しました。それは基本的には概念実証です。背後にシンプルなデータベースがあり、アイテムを表示、作成、更新、削除できるように、データベースを機能させようとしています。現在、私は表示と更新のみを行っています。後で作成に取り組みます。現時点では、削除が機能しない理由を理解できません。これまでに見つけたほとんどすべてのことから、WebDAVモジュールを無効にする必要があることがわかります。私はそれを行い、それからPUTを動作させました。しかし、DELETEを機能させることができません。サービスを通じてDELETEを呼び出そうとすると、次のエラーが発生します。

リモートサーバーが予期しない応答を返しました:(405)メソッドが許可されていません。

だから私のサーバーのどこかにそれはDELETE動詞を許可していないようです。しかし、私の人生では、それを理解することはできません。私はすでにハンドラーマッピングをチェックしており、ハンドラーは.SVC拡張子のすべての動詞を許可しています。 WebDAVを無効にしました。他にどこを見ればいいのか本当にわからない。 Windows Server 2008 R2でIIS 7.5を使用しています。

(それがまったく役立つ場合は、コードを提供できます)

ありがとう、コーリー

26
Corey Burnett

DELETE動詞を使用しているときに405 Method Not Allowedを取得し続ける理由を理解するために、膨大な時間を費やしました。私が読んだものはすべてIISからWebDAVをアンインストールすると言っていましたが、すべてのサイトで503エラーが発生するという点でIISを壊すようでした。再インストールしてから、IISを調べて設定を調べました。

WebDAVが問題であり、IIS機能ページに "WebDAV Authoring"という名前のノードがあることがわかりました。それをクリックすると、プロパティページを取得するためにWebDAV設定...をクリックできます。セクションリクエストフィルタリング動作で、Allow Verb FilteringFalseに設定すると、私(YMMV)にとってうまくいくようです。

これは、解決策を探すときに人気のある結果のように思われたので、提案された解決策のリストに追加したいと思いました。

25
HeliNinja

同じ問題が発生した場合。

ここにあなたが試すことができる別の方法があります。

web.config

<system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" /> 
    </handlers>
</system.webServer>
54
maxisam

IIS Managerでウェブサイトのハンドラーマッピングを開きます

削除する各ハンドラーを編集し、[要求の制限]をクリックして、[動詞]タブを選択し、DELETEを[次のいずれか]リストに追加するか、必要に応じてすべての動詞を許可します。

ウェブサイトの再起動やコードの再コンパイルが必要になる場合があります

1
sirhcsivad

これが本当に私の質問への答えかどうかはわかりませんが、問題は解決しました。 Visual Studioで新しいプロジェクトを開始するだけで、今回は.NET RESTオンラインで見つけたサービステンプレートを使用しました。次に、以前の試行で得た古いコードを転送して、新しいプロジェクト。これは魅力のように機能しました。4つの動詞はすべて正しく機能するようになりました(GET、PUT、POSTおよびDELETE)。したがって、現在は機能しています。

コーリー

0
Corey Burnett