2011-01-05 129 views
2

我收到一個錯誤,指出:「HTTP動詞POST用於訪問路徑'[我的路徑]'是不允許的。」用於訪問路徑'[我的路徑]'的HTTP動詞POST不允許

這個錯誤是由於我正在實現一個使用POST方法的HTML表單元素並且沒有在其ACTION參數中顯式定義一個.aspx頁面的事實而引起的。

例如:

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

上述HTML是上的 「/foo/default.aspx」 的文件。

現在,如果用戶將URL指向根目錄「foo」而未指定aspx文件(即「http:// localhost/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> 

我好奇,爲什麼被拋出的錯誤,所以讀出的Microsoft KB,指出發生

此問題,因爲客戶端 使得通過發送 POST方法的HTTP請求一個靜態的HTML頁面。 靜態HTML頁面不支持 POST方法。

我想這個解釋的核心是有意義的,但是在我的情況下,我的表單並沒有被髮送到一個靜態html頁面 - 它被髮送到html表單所在的頁面(default.aspx )...這對於保留爲空的ACTION參數是隱含的。

是否有可能配置IIS(或其他),這將允許我們做表單發佈並保持ACTION參數爲空?

+0

我會盡量避免不指定操作。由於瀏覽器沒有發佈信息,也沒有指定操作(很少),我想你可能會在某些平臺/瀏覽器上遇到奇怪的行爲。 – Teson 2011-01-05 23:52:27

+0

是的,你應該總是指定一個動作,即使它回發到同一頁面本身。 – 2011-01-06 01:10:05

回答

0

自從最初經歷這個錯誤已經過去了一年,我認爲我應該在這篇文章中添加一個我不再接收錯誤的文章。

我不知道是什麼修復了這個問題,但我的猜測是,由於在一年內在我的開發機器上實現了一些Windows Update,錯誤消失了。

我在IIS 7設置中注意到的一件事是「ISAPI.DLL」(在「處理程序映射」部分中)被禁用。我無法弄清楚如何「啓用」它以嘗試重現問題以顯示ISAPI.DLL導致(或相關)的問題。

無論如何,我無法重現當我在HTML Form標籤中留下「action」屬性爲空白時發生的此錯誤。所以,我的猜測是有一個IIS和/或.NET Framework更新可隱含或明確地修復OP中提到的錯誤。

+0

我看到這在我的機器上也是禁用的。但我仍然得到錯誤。你記得哪個更新爲你解決了這個問題嗎? – user007 2013-07-09 18:42:52

1

嘗試使用「./」作爲您的操作。

+0

沒有運氣。不管怎麼說,還是要謝謝你。 – Jed 2011-01-06 00:07:53

3

檢查您的默認文檔 - 無需指定操作,它可能會剝離爲foo/。如果您有一個靜態的默認文檔(即:Default.html,而不是Default.aspx),可能會導致此問題。

+0

我正在建議同樣的事情。這聽起來像這篇文章將轉到一個HTML頁面,這將指向/ foo文件夾中的default.htm。 – Flipster 2011-01-06 00:25:02

+0

好的建議。但是,/ foo目錄只包含一個文件 - default.aspx。更不用說,我已經配置IIS在任何其他文件名之前檢查default.aspx。 – Jed 2011-01-06 15:55:02

0

我有同樣的事情發生 - 在表單標籤中有action =「」。不知道它是如何在那裏。有時當我編輯gridView時,它不會與HTML「同步」。也許這就是發生了什麼事。奇怪的。花了我一段時間才找到!

0

的ASP.Net ISAPI DLL被插入的翻譯所有(*)網址,所以不得不請按照下列步驟:

  1. 點擊網站
  2. 選擇屬性,然後在虛擬目錄選項卡單擊配置
  3. 刪除ASP.Net ISAPI DLL(C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll)
  4. 重新啓動IIS並重試。
0

我在設置自定義HTTP處理程序時沒有使用窗體時出現此錯誤。 您必須讓IIS(或VisualStudio中的WebDevServer)知道您使用自己的處理程序處理某些頁面。這是通過向web.config文件添加條目來完成的。我可以輸入它們,但是生命短暫,太陽落在院子裏,所以這裏有一個鏈接 - 但向下滾動到「在IIS中註冊自定義HTTP處理程序」。或閱讀了整個事情,因爲這一切都很好,肉高科技,掘金...

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

希望有所幫助。

相關問題