11

IIS7.5でASP.NETMVC4Webアプリケーションをホストしようとしています。アプリをデバッグするときは、すべてが正常に機能します(これは、Windows認証が原因であると思います)。ただし、アプリを公開して参照すると、405メソッドが許可されていないというエラーが発生します。

POST http://localhost/ 405 (Method Not Allowed)
send 
i.extend.ajax 
i.(anonymous function)
(anonymous function)

私が読んでいることから、これはIISのハンドラーマッピングの問題であるか、web.configで何らかの構成が必要です。いずれにせよ、私は正しい解決策を見つけられませんでした。誰かが私のweb.configがすべてのPOSTに何を含めるべきか教えてもらえますか?および/またはIISで正しいハンドラーマッピングを設定する方法。私はWeb開発に不慣れであり、オプションの数が少々圧倒的であることがわかりました。

エラーをスローするJavaScriptは次のとおりです。

$.post("/", { latitude: locLat, longitude: locLon, username: $('#onlineUsers').attr('itemid') });
4

3 に答える 3

19

405は、HTTP動詞(GET、PUT、POST、DELETE、HEADなど)が要求され、指定されたハンドラーによってサポート/禁止されていない場合にIISによってスローされます。

IISマネージャー->デフォルトのWebサイト->ハンドラーマッピング(またはWebアプリケーションに固有のハンドラーマッピング)を開く必要があります

ここに画像の説明を入力してください

ここでは、ハンドラーマッピングの1つが「POST」動詞を許可していないため、ハンドラーマッピングを試す必要があります。

特定のページ(.aspx、.ashxなど)に投稿していないため、問題の原因となっている正確なハンドラーを特定するのは困難です。

関心のあるハンドラーは次のとおりです。

  • ExtensionlessUrlHandler-ISAPI-4.0_32ビット/64ビット
  • StaticFile

リクエストのルーティング先のハンドラーを特定したら、それをダブルクリックしてダイアログを開きます。

ここに画像の説明を入力してください

そこから[制限のリクエスト]、[動詞]の順にクリックします

適切な動詞がテキスト領域に存在することを確認してください。

ここに画像の説明を入力してください

前に述べたように、特定のページに投稿していないため、どのハンドラーがリクエストを処理しているかわかりません(リクエストを適切にルーティングするURLの書き換えが行われている可能性があります)。


上記が失敗した場合は、WebDAV Publishingがインストールされているかどうかを確認し、削除する必要があります(再起動が必要です)。

WebDAV

于 2012-11-06T21:26:08.800 に答える
0

たぶん、次のように投稿のURL形式を変更する必要があります。

$.post('@Url.Content("~/Attach/UpdateAttach")'
于 2014-02-28T02:30:56.833 に答える
0

ここの一部のユーザーは、専用サーバーではなく共有ホスティングを使用しているため、IISコントロールパネルにアクセスできない可能性があります。

これは私の場合であり、これが私が見つけたものです。

Godaddyコントロールパネルを介して作成されたルートディレクトリにWebアプリケーションがあります。POSTリクエストが確認されます。

次に、FileZillaを使用してjqueryのテストフォルダーを作成しました..(FileZillaを使用したことに注意してください。したがって、WebアプリケーションとGoDaddyのIISは、このフォルダーをアプリケーションの一部にしたいとは認識していません)。

次に、このテストフォルダでこのjQueryをテストするたびに、エラーが発生します[405メソッドは許可されていません]。

解決策は非常に簡単でした:

テストページをFileZillaによって作成されたテストフォルダーから移動し、Godaddyコントロールパネルから作成されたフォルダー内に配置しました(この場合、IISはこのページが私のWebアプリケーションの一部であることを認識します:))

それが共有ホスティングの人々に役立つことを願っています

于 2014-03-08T08:13:41.467 に答える