Restful WCF IIS 7.5 405 方法不允许间歇性

Restful WCF IIS 7.5 405 Method Not Allowed Intermittent

我最近在使用 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 列表。

有一件事我没有做过,因为我很紧张:

fire up your Visual Studio 2010 Command Prompt or browse to "C:\Windows\Microsoft.NET\Framework\ v4.0.30319". And run the following command from the command prompt: aspnet_regiis.exe -iru

我愿意接受这里的建议,我很乐意提供更多详细信息,但不确定此时我还能添加什么。

到目前为止,对我有用的是清除 "InitializeService.cs" 文件中的 RoutTable。

RouteTable.Routes.Clear();
RouteTable.Routes.Add(......)
RouteTable.Routes.Add(......)

我不知道我们的 IIS 7.5 服务器中是否缓存了某些内容,或者这 is/was 的根本原因是什么,但我尝试了所有其他方法,但没有任何效果,在添加之前清除路由后,我没有遇到 405 错误。

也许其他人会觉得这有帮助。