2012-11-06 401 views
11

我想承載一個IIS 7.5的ASP.NET MVC4 Web應用程序。在調試應用程序時,一切正常(我假設這是由於Windows身份驗證)。 然而,當我發佈應用程序和瀏覽它,我得到一個405不允許的方法錯誤:jQuery POST,錯誤405方法不允許

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

從我一直在閱讀這可以是一個與處理程序映射在IIS或一些配置問題需要在web.config中。無論如何,我還沒有找到正確的解決方案。 任何人都可以告訴我什麼我的web.config應該包括所有POSTS?和/或如何在IIS中設置正確的處理程序映射,因爲我是網絡開發的新手,並且發現選項的數量有點過分。

的片的JavaScript引發錯誤的是以下內容:

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

如果您檢查火災bug或chrome開發工具,則該URL對於正在發出的請求是否正確? – Rafay

+0

該請求位於Home控制器的Index方法中。我試着用'/'和'Home/Index'作爲網址,都給出了同樣的錯誤,但我相信它們是正確的。 – Matt

回答

18

阿405由IIS拋出當HTTP動詞(GET,PUT,POST,DELETE,HEAD等等)請求和不被指定的處理程序支持/禁止。

你需要打開IIS管理器 - >默認網站 - >處理程序映射(特定於Web應用程序或處理程序映射)

enter image description here

在這裏你需要玩處理器映射,因爲其中一個不允許「POST」動詞。

由於您沒有發佈到任何特定頁面(.aspx,.ashx等),因此很難確定導致您問題的確切處理程序。

的利益處理程序可能是:

  • ExtensionlessUrlHandler-ISAPI-4.0_32bit位/ 64位
  • StaticFile

一旦你確定你的請求被路由到處理程序,雙擊它即可打開對話。

enter image description here

登錄後,點擊「請求限制」,然後「動詞」

確保相應的動詞出現在文本區域。

enter image description here

正如我前面提到的,我不知道該操作是處理你的要求,你沒有張貼任何特定頁面(您可能必須在適當的路由你的要求的地方URL重寫)。


如果上述失敗,您可能需要檢查是否安裝了WebDAV發佈並將其刪除(需要重新啓動)。

WebDAV

+3

靜態文件處理程序是個問題。感謝您的幫助,很好的回答! – Matt

+0

但實施後它對我的作品,但ASP:鏈接按鈕停止工作。你知道爲什麼會出現這個問題嗎? – rahularyansharma

+0

如果我只使用GET,POST jQuery ajax工作,但asp:鏈接按鈕停止工作,並且如果我使用所有圖像中顯示的那麼jquer.post拋出405錯誤。 – rahularyansharma

0

也許你應該修改post'URl格式是這樣的:

$.post('@Url.Content("~/Attach/UpdateAttach")' 
0

這裏有些用戶是具有共同主辦,而不是專用服務器,所以他們可能無法獲得訪問IIS的控制面板..

這是我的情況,在這裏是我發現..

我有個我的web應用程序e根目錄通過Godaddy控制面板創建..和POST請求被確認..

然後我用FileZilla創建一個測試文件夾爲我的jquery ..(注意我使用FileZilla,所以Web應用程序,因此GoDaddy的IIS的是不知道,我想這個文件夾是我的,我們的應用程序的一部分)

然後每當我測試這個jQuery的這個測試文件夾..我得到這個錯誤[405不允許的方法] ..

解決方案非常簡單:

我將測試頁移出該測試文件夾crea泰德通過FileZilla中和位於它是通過GoDaddy的控制面板創建的文件夾內(在這種情況下,IIS會知道,這頁是我的web應用程序:)的一部分)

希望這將幫助那些在共享主機