小编Mar*_*iak的帖子

在IIS服务器上的PUT API调用期间不会触发Application_BeginRequest

背景

我有一个带有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)

.net iis asp.net-mvc global-asax asp.net-web-api

7
推荐指数
1
解决办法
5720
查看次数

标签 统计

.net ×1

asp.net-mvc ×1

asp.net-web-api ×1

global-asax ×1

iis ×1