背景
我有一个带有WebAPI组件的MVC应用程序.我正在使用jQuery和AJAX来传递和接收来自WebAPI的数据.我依赖于在每次调用期间触发的Application_BeginRequest来执行一些平凡的任务.
问题
Application_BeginRequest始终触发对WebAPI的GET和POST调用.然而,当我做PUT调用的WebAPI的的Application_BeginRequest并没有开火,导致应用程序无法运行任务.实际上接收到PUT调用,因为正在执行控制器中的相应方法.
我在我的web.config文件中启用了PUT(如下所示).如何启用PUT方法调用以触发Application_BeginRequest方法?
注意: Application_BeginRequest在使用IIS Express时触发PUT调用,但在使用完整版本的IIS时则不触发.
项目:完整的项目可以在这里下载:BeginRequestFail.zip
Web.Config中
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="PassThrough">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="404" path="/Error/404" responseMode="ExecuteURL" />
<error statusCode="403" path="/Error/403" responseMode="ExecuteURL" />
<error statusCode="500" path="/Error/500" responseMode="ExecuteURL" /> …Run Code Online (Sandbox Code Playgroud)