2011-01-05 10 views
2

「HTTP動詞POSTがパス「[my path]」にアクセスするのに使用されています。パス '[my path]'へのアクセスに使用されたHTTP動詞POSTは許可されていません。

エラーは、POSTメソッドを使用するHTMLフォーム要素を実装しており、そのACTIONパラメータに.aspxページを明示的に定義していないために発生しています。例えば

<form action="" method="post"> 
    <input type="submit" /> 
</form> 

上記のHTMLは "/foo/default.aspx" でファイルの上にあります。

ユーザーがaspxファイル(つまり「http:// localhost/foo」)を指定せずにURLをルートディレクトリ "foo"に指定してフォームを送信すると、エラー "The HTTP verb POST usedパス '/ foo'にアクセスすることはできません。 "スローされます。

ただし、ユーザーが「http://localhost/foo/default.aspx」に移動してフォームを送信すると、ACTIONパラメータが空のままであってもすべてがうまくいくようになります。

注:.aspx(default.aspx)ページの名前をACTIONパラメーターに明示的に追加すると、エラーはスローされません。したがって、以下の例は、ユーザーがURL内のファイルの名前を定義しているかどうかに関係なく正常に動作します。

<form action="default.aspx" method="post"> 
    <input type="submit" /> 
</form> 

私は、エラーがスローされた理由として興味があったので、私はクライアント がに POSTメソッドを送信することにより、HTTP要求を行うため、この問題が発生し

を述べMicrosoft KBを読みます静的HTMLページ。 静的HTMLページは POSTメソッドをサポートしていません。

私の場合、私のフォームは静的なHTMLページに送られていないと思われます.HTMLフォームが存在するのと同じページに送られます(default.aspx )...これは、空のままのACTIONパラメーターに暗黙的に指定されています。

フォームのポスティングを行い、ACTIONパラメータを空にしておくようにIISを設定することは可能ですか?

+0

私はアクションを指定しないでください。ブラウザが投稿を行い、アクション(まれ)を指定していないため、一部のプラットフォームやブラウザで奇妙な動作が発生する可能性があります。 – Teson

+0

はい、同じページ自体へのポストバックであっても、常にアクションを指定する必要があります。 –

答えて

0

このエラーが最初に発生してから1年が経過しています。この投稿に追加する必要がありますが、エラーは表示されなくなりました。

私は何が問題を解決したのかわかりませんが、私の推測では、年内に私の開発マシンに実装されているWindows Updateによってエラーが消えてしまったと思います。

IIS 7の設定で気付いたことの1つは、「ハンドラマッピング」セクションの「ISAPI.DLL」が無効になっていることです。 ISAPI.DLLが問題を引き起こしている(または関連している)ことを示すために、問題を再現しようとするために「有効」にする方法を理解できません。

とにかく、HTMLフォームタグに「アクション」属性を空白のままにしておくと、このエラーを再現できません。だから、私の推測では、暗黙的または明示的にOPに記載されているエラーを修正するIISおよび/または.NET Frameworkアップデートがあることです。

+0

私のマシンでもこれが無効になっています。しかし、私はまだエラーが発生します。あなたはこの問題をどのように修正したのか覚えていますか? – user007

1

アクションとして「./」を使用してみてください。

+0

運がよかったです。とにかくありがとう。 – Jed

3

デフォルトのドキュメントを確認してください。アクションを指定しないと、foo/に戻ります。静的な既定のドキュメント(Default.htmlではなくDefault.aspx)がある場合、この問題が発生する可能性があります。

+0

私は同じことを提案しようとしていました。この投稿はHTMLページに送られているようですが、これは/ fooフォルダにdefault.htmがあることを示しています。 – Flipster

+0

良い提案。ただし、/ fooディレクトリにはdefault.aspxというファイルが1つだけ含まれています。もちろん、他のファイル名の前にdefault.aspxをチェックするようにIISを構成しました。 – Jed

0

私は同じことが起こった - フォームタグでaction = ""を持つことによって。どのようにそこに入ったのか分からない。グリッドビューを編集すると、HTMLと「同期」しないことがあります。多分これは起こったことです。奇妙な。私も見つけたかった!

0

ASP.Net ISAPI DLLがプラグインされたすべての(*)を変換するためのURLはそう次の手順を実行しなければならなかった:

  1. クリックしてウェブサイト
  2. [プロパティ]を選択し、[仮想ディレクトリ]タブをクリックして設定の上
  3. ASP.Net ISAPI DLL(C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll)を削除します。
  4. IISを再起動してもう一度お試しください。
0

フォームを使用せずにカスタムHTTPハンドラを設定していたときにこのエラーが発生しました。 IIS(またはVisual StudioのWebDevServer)に、自分のハンドラを使って特定のページを処理することを知らせる必要があります。これは、web.configファイルにエントリを追加することによって行われます。私はそれらを入力することができますが、人生は短く、太陽は庭の上にあるので、リンクはありますが、「IISでカスタムHTTPハンドラを登録する」までスクロールしてください。それはすべての良い、肉のハイテクナゲットだとしても役立ちます希望...、

http://msdn.microsoft.com/en-us/library/ms227433%28v=vs.100%29.aspx

を全部を読んで。

関連する問題