2014-01-21 42 views
3

我真的沒有想法,需要一些幫助。我正在開發一個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> 
+0

405「方法不允許」表示您的應用程序使用錯誤的HTTP方法向某個端點發出請求。也許你(或其他服務器人)從該端點刪除了該方法。在chrome devtools中,轉到網絡選項卡,並從「405請求」中獲取所有信息並將其發佈到此處。你必須在你的問題中提供一些細節! –

+0

我已添加「更新1」。感謝您的回覆Ilan Frumer!我甚至可以給你一個提琴手提取,但我猜想裏面並沒有真正的意思。沒有端點已被更改,web.config已更改,但僅用於添加SMTP部分。當我執行功能時(例如在IE或Chrome或Fiddler中),我的斷點在.NET中甚至沒有被觸及。當我在不同的機器上這樣做時,斷點會被擊中。 – SLi

+0

也許你的服務器不喜歡'Content-Type:text/html; charset = utf-8'請求:嘗試改變它:https://gist.github.com/s9tpepper/3328010 –

回答

2

調查和研究兩天後,我通過完全重新設置我的工作環境來解決問題。我再次安裝了Visual Studio 2013 Express,並從TFS獲取了新的源代碼副本。現在它再次工作。

@Ilan Frumer的提示很有用。它引導我進入搜索安全/網絡配置問題的方向。我比較了舊環境和新環境,發現「增強型Internet Explorer安全性」出人意料地打開了。我認爲這可能與最近的MS更新有關,因爲我沒有手動打開它。但那只是一個猜測。關閉它並沒有幫助,所以我決定重新安裝我的環境。

@Ilan Frumer:再次感謝您的幫助!真的很感激你爲我花費的時間。