Asp.net HTTP修补程序谓词在windows server 2012 r2上不工作

Asp.net HTTP修补程序谓词在windows server 2012 r2上不工作,asp.net,asp.net-web-api,windows-server-2012-r2,iis-8.5,http-patch,Asp.net,Asp.net Web Api,Windows Server 2012 R2,Iis 8.5,Http Patch,我正在开发使用WebApi进行数据操作的单页应用程序。我的网站托管在Windows Server 2008 R2(IIS 7.5.7600.16385)上,运行良好,但在迁移到Windows Server 2012 R2(IIS 8.5.9600.16384)后,HTTP修补程序谓词不起作用,api调用返回,状态代码为400“错误请求”。我在web.config中尝试了以下代码片段,但没有成功 <handlers> <remove name="WebDAV" /&g

我正在开发使用WebApi进行数据操作的单页应用程序。我的网站托管在Windows Server 2008 R2(IIS 7.5.7600.16385)上,运行良好,但在迁移到Windows Server 2012 R2(IIS 8.5.9600.16384)后,HTTP修补程序谓词不起作用,api调用返回,状态代码为400“错误请求”。我在web.config中尝试了以下代码片段,但没有成功

<handlers>
      <remove name="WebDAV" />
      <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" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" type="System.Web.Handlers.TransferRequestHandler" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" />
      <add name="Telerik.ReportViewer.axd_*" type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=9.0.15.225, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" path="Telerik.ReportViewer.axd" verb="*" />
    </handlers>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>


谷歌搜索了一次又一次,但没有得到任何有用的东西,我被困在这里,任何帮助都将不胜感激。

这些是我在移动服务器后遇到PUT请求类似问题时使用的web.config设置

<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" />

当我试图从网络向外发送API调用时,一切都按预期进行。进一步调查显示,网络防火墙策略存在问题。由于错误,生产服务器被NOC团队列入黑名单


谢谢大家的努力:)

帮助了我。也许值得一试……你知道它在什么时候失败了吗?e、 g.它是否符合global.asax中的请求启动方法?它能达到你的控制器吗?@RyanDansie不知道,但我在我的开发机器上使用windows 8.1(IIS 8.5.9600.16384),一切正常。你能指导我如何检查哪里出故障吗?谢谢。在生产服务器上,您通常需要添加日志记录,例如在不同的位置写入文件/db/event viewer,以了解代码的哪些部分。在本例中,我将检查控制器、全局asax事件以及控制器上的任何身份验证/操作过滤器。您也可以尝试visual studio远程调试,但它不太容易开始工作。@RyanDanise感谢您的回复,几天前我使用这项工作来解决开发机器上的oData服务问题。然而,这对当前问题不起作用。你还有什么建议吗。。。