使用 IIS 时方法不允许 405
Posted
技术标签:
【中文标题】使用 IIS 时方法不允许 405【英文标题】:Method not allowed 405 when using IIS 【发布时间】:2012-09-21 10:45:34 【问题描述】:我有以下 WCF:
[OperationContract]
IList<OperationRoomDto> GetOperationRooms();
我有一个使用这个 WCF 的网站,当我使用 Visual Studio(Asp.Net 开发服务器)时它工作正常,但是当我将 WCF 部署到 IIS 时,我得到了这个异常:
远程服务器返回错误:(405) Method Not Allowed。
我创建了一个简单的网站来测试这个 WCF(在 IIS 上)并且它工作正常。
这是网站 web.config 文件的一部分:
<endpoint address="http://server/WcfService"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMessageService"
contract="MyProject.Web.Wcf.IMessageService" name="BasicHttpBinding_IMessageService">
</endpoint>
以及这部分网络服务配置文件:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true" />
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
我尝试调试 w3wp.exe 服务以获取任何隐藏的异常,我在 web 服务方法处设置了一个断点,但调试器甚至没有到达那里,并且在到达 web 服务类之前发生了异常.
【问题讨论】:
我遇到了类似的问题,解决方案是来自 Windows 功能的turning on HTTP Activation。 当我遇到这个问题时,解决方案是turning on HTTP Activation。 【参考方案1】:我发现问题了,是因为wcf的Url不正确,漏掉了服务文件名
<endpoint address="http://server/WcfService"
应该变成:
<endpoint address="http://server/WcfService/Service.svc"
【讨论】:
NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!我确实花了 小时 试图解决这个问题,结果证明这是问题所在。谢谢你:) :) 很高兴您的问题解决了,我也花了很多时间才解决。以上是关于使用 IIS 时方法不允许 405的主要内容,如果未能解决你的问题,请参考以下文章
错误 405 - IIS Express 10 不允许使用 CORS for Web API 的方法
HTTP 错误 405.0 - IIS Express 中不允许的方法
IIS 7.5 405 方法不允许从 StaticFileModule 进行 PUT
405 - 不允许用于访问此页面的 HTTP 动词。 [IIS 8.5] [Windows Server 2012 R2]