IIS 8.0 详细错误 - 405.0 - 方法不允许

Posted

技术标签:

【中文标题】IIS 8.0 详细错误 - 405.0 - 方法不允许【英文标题】:IIS 8.0 Detailed Error - 405.0 - Method Not Allowed 【发布时间】:2013-07-13 17:05:46 【问题描述】:

我只是在寻找可能导致此错误的不同原因。我在一个 Intranet 网站上工作,到目前为止没有任何问题。我正在使用 Blueimp 的 Fileupload 插件,我能够将文件上传到我的服务器没有问题。我在我的 MVC 4 应用程序中使用 WebAPI 控制器来处理文件的上传

 public HttpResponseMessage Upload()

突然之间,在我的一次测试运行中,我遇到了这个错误,并且无法摆脱它。我已经尝试删除 WebADV(甚至没有安装在我的机器中)等...我这里的选项用完了,我无法追溯这个错误。

任何帮助都将不胜感激,即使它指向另一个帖子。对于帖子的含糊之处,我深表歉意,但我似乎无法追踪我的错误,因此,我有点绝望。

再次感谢!

配置:

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

【问题讨论】:

***.com/q/12807331/#comment23576850_13620659,也许?或者,您可以分享&lt;system.webServer&gt; 配置吗?另外,Upload() 与哪个 HTTP 动词相关联?您的 API 路由是否包含 action 占位符?而且,插件是否向/api/controller/upload or just /api/controller 发送请求?请求是cross-origin(参考:same-origin)吗? 我将在编辑中发布我的 配置。 Upload 与 HttpGet 和 HttpPost 相关联(是的,两者都有),请求转到 api/upload(RouteConfig 文件中的 /api/controller) 我在公共 UploadController() 中实例化了一个存储库,但它永远不会触发(因此它被注释掉了,我在它工作时设置了断点)......我曾经认为这是一个问题,我的设置文件中覆盖了某些内容,但您似乎认为问题出在我的 WebAPI 控制器上?这很奇怪,因为这在我同事的电脑上工作,除了我的。 对不起,我并不是想说这是问题所在。我只是信息钓鱼。您的问题没有太多技术细节。 对此我深表歉意...我知道这很模糊,但这是因为我真的不知道从哪里开始。顺便说一句,你帮了大忙 :) 感谢您抽出宝贵时间,我发布了配置部分 【参考方案1】:

我通过以下方式解决了这个问题。我下载了 Ninject.WebApi.DependencyResolver。这让我可以在我的控制器工厂注册 WebApi。之后,将路径(例如“api/upload”(api/controllername))更改为“api/upload/upload”解决了这个问题!

【讨论】:

以上是关于IIS 8.0 详细错误 - 405.0 - 方法不允许的主要内容,如果未能解决你的问题,请参考以下文章

IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed 解决方法

ABP PUTDELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow

HTTP 错误 405.0 - 不允许使用 Jquery ajax get 的方法

WebApi 2 HttpPut,HttpDelete,HttpPost无法正常工作-HTTP错误405.0 - 方法不允许

IIS 7.5、8.0、8.5 HTTP 错误 403.14 - 安装干净的 Windows 后被禁止

ASP.Net Core 发布项目遇到的错误 405.0