自昨天起,IIS localhost上不允许使用405方法

时间:2014-01-21 11:36:51

标签: .net angularjs google-chrome localhost iis-8

我真的没有想法,需要一些帮助。我正在使用AngularJS作为前端语言和C#.NET中的后端开发Web应用程序。所有这些都是在使用MS SQL数据库的Visual Studio Express 2013中完成的。

其中一项功能是将图片上传(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>

1 个答案:

答案 0 :(得分:2)

经过两天的调查和研究,我通过完全重新设置我的工作环境解决了这个问题。我再次安装了Visual Studio 2013 Express,并从TFS获取了源代码的新副本。现在又恢复了工作。

@Ilan Frumer的暗示非常有用。它引导我进入搜索安全/网络配置问题的方向。我比较了旧环境和新环境,发现“增强的Internet Explorer安全性”令人惊讶地打开了。我认为它可能与最近的MS更新有关,因为我没有手动打开它。但那只是猜测。关闭它没有帮助,所以我决定重新安装我的环境。

@Ilan Frumer:再次感谢您的帮助!非常感谢你花在我身上的时间。