Restful WCF IIS 7.5 405 方法不允许间歇
Posted
技术标签:
【中文标题】Restful WCF IIS 7.5 405 方法不允许间歇【英文标题】:Restful WCF IIS 7.5 405 Method Not Allowed Intermittent 【发布时间】:2018-05-06 10:27:21 【问题描述】:我最近向使用 IIS 7.5 托管在我们自己的 Web 服务器中的 .NET 4.0 中编译的 WCF restful api 添加了一些功能。当我在邮递员中进行测试时,它可以工作一段时间,然后我开始收到 405 Method not allowed 错误。如果我等待一段时间(没有具体说明),那么它会在几次通话中起作用,然后重新开始。
经过一番搜索,我最好的猜测是我们有某种处理程序映射问题,但我不知道为什么会突然出现,因为我们已经有一段时间没有在 IIS 中进行任何更改了。
我尝试了其他人在其他问题中的建议,例如: (从我的 web.config 中截取)并且这些都无法解决问题。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<remove name="ServiceModel" />
<handlers>
<remove name="svc-Integrated" />
<add name=".svc" verb="*" path="*.svc" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory,
System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
我应该注意到我们正在使用 .svc-less WCF(不确定这是否是正确的术语,但我们没有 .svc 文件)。
此应用程序所在的网站位于 .NET 4.0 集成应用程序池中。
当我查看 IIS 中的处理程序映射时,我看到“”、“.”和“*.svc”的重复项,但我不知道应该和不应该是什么那里。这是我在 IIS 中看到的 .svc 列表。
由于我很紧张,我还没有做的一件事是:
启动您的 Visual Studio 2010 命令提示符或浏览到“C:\Windows\Microsoft.NET\Framework\ v4.0.30319”。并从命令提示符运行以下命令:aspnet_regiis.exe -iru
我对这里的建议持开放态度,我很乐意提供更多详细信息,但只是不确定此时我还能添加什么。
【问题讨论】:
【参考方案1】:到目前为止,对我有用的是清除“InitializeService.cs”文件中的 RoutTable。
RouteTable.Routes.Clear();
RouteTable.Routes.Add(......)
RouteTable.Routes.Add(......)
我不知道是否有东西缓存在我们的 IIS 7.5 服务器中,或者根本原因是什么,但我尝试的所有其他方法都没有奏效,在添加路由之前清除路由后,我没有出现 405 错误。
也许其他人会觉得这很有帮助。
【讨论】:
以上是关于Restful WCF IIS 7.5 405 方法不允许间歇的主要内容,如果未能解决你的问题,请参考以下文章