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 方法不允许间歇的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 7.5 上使用 WCF4 自定义浏览器 URL

MVC 4. IIS 7.5 PUT 返回 405

IIS 7.5 错误 405 不支持 PUT 方法

IIS 7.5、Web 服务和 HTTP 405 错误

使用 IIS 时方法不允许 405

IIS 7.5 + 为 RESTFul 服务启用 PUT 和 DELETE,无扩展