我真的沒有想法,需要一些幫助。我正在開發一個AngularJS作爲前端語言和C#.NET後端的Web應用程序。所有這些都是在Visual Studio Express 2013中使用MS SQL數據庫完成的。405方法不允許在IIS本地主機上工作,因爲昨天
其中一項功能是將圖片上載(POST)到服務器。這在過去三個月裏運行良好,但是在昨天或前一天停止工作(不知道是因爲我沒有在最後幾天對此功能做過測試)。 從一天到另一天,當我在本地啓動我的項目並嘗試上傳圖片時,我得到「405方法不允許」。 奇怪的是,我沒有在另一臺機器上得到這個錯誤(我的同事沒有得到它)。更令人驚訝的是,另一個功能(使用POST)仍然有效。
我認爲最近的Windows更新,IIS更新或Chrome/IE更新的方向,但我找不到我的機器/我的項目發生了什麼單一的提示。我已經恢復了所有無法改變的變化,看看它是否與它有關,但它不能解決我的問題。
有沒有人有一個想法,我可以搜索或檢查,以便再次工作? 任何幫助將非常感激,因爲我已經失去了大約十個小時尋找沒有解決方案的問題。
即使AngularJS中的AJAX調用來自API所服務的同一臺機器,它與CORS有什麼關係嗎?爲什麼最近三個月沒有任何問題?
在此先感謝您的幫助。我目前不知道如何繼續。 - 的Sascha
更新1: 請求報頭:
POST http://localhost:49204/api/upload/ HTTP/1.1
Host: localhost:49204
Proxy-Connection: keep-alive
Content-Length: 375232
Accept: application/json, text/plain, */*
Origin: http://localhost:49204
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
Authorization: bearer <omitted for brevity>
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryo14gICdV6HSLLxsg
Referer: http://localhost:49204/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
響應頭:
HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-SourceFiles: =?UTF-8?B?QzpcRGV2ZWxvcG1lbnRcUHJvamVjdHNcVmlzdWFsIFN0dWRpbyBFeHByZXNzXFdvcmtzcGFjZVxCZWxlZ21laXN0ZXJcQmVsZWdtZWlzdGVyXEV4cGVuc2VXZWJcYXBpXHVwbG9hZFw=?=
X-Powered-By: ASP.NET
Date: Tue, 21 Jan 2014 12:35:04 GMT
Content-Length: 5456
Web.config中(部分地由VS2013生成的默認的Web.config)
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
405「方法不允許」表示您的應用程序使用錯誤的HTTP方法向某個端點發出請求。也許你(或其他服務器人)從該端點刪除了該方法。在chrome devtools中,轉到網絡選項卡,並從「405請求」中獲取所有信息並將其發佈到此處。你必須在你的問題中提供一些細節! –
我已添加「更新1」。感謝您的回覆Ilan Frumer!我甚至可以給你一個提琴手提取,但我猜想裏面並沒有真正的意思。沒有端點已被更改,web.config已更改,但僅用於添加SMTP部分。當我執行功能時(例如在IE或Chrome或Fiddler中),我的斷點在.NET中甚至沒有被觸及。當我在不同的機器上這樣做時,斷點會被擊中。 – SLi
也許你的服務器不喜歡'Content-Type:text/html; charset = utf-8'請求:嘗試改變它:https://gist.github.com/s9tpepper/3328010 –