首页 > 解决方案 > Application_BeginRequest 不会为 PUT 请求触发

问题描述

我遇到了一个我无法解释甚至无法解决的奇怪案例。

Application问题很简单:我使用文件中的方法记录所有请求Gloal.asax.cs。使用的代码如下:

public class MvcApplication : System.Web.HttpApplication
{
    private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();

    void Application_BeginRequest()
    {
        Logger.Debug("Application_BeginRequest");
        Logger.Info(Request.HttpMethod + " " + Request.Url + " requested from " + Request.UserHostAddress);

        ...
    }

    void Application_EndRequest()
    {
        Logger.Debug("Application_EndRequest");
        Logger.Info("Response.StatusCode SubStatusCode are " + Response.StatusCode + " " + Response.SubStatusCode);
        if (Response.IsRequestBeingRedirected)
        {
            Logger.Info("Response.RedirectLocation is " + Response.RedirectLocation);
        }
    }
}

现在这几乎总是完美地工作。但是,由于某种原因PUT,对 ApiController 的请求不会被记录。以下是被调用方法的代码:

public class InvoicesController : ApiController
{
  async public Task Put(int id, [FromBody] InvoiceParameters parameters)
  {
    if (!UserIsInkasoResolver.Resolve())
      throw new HttpResponseException(HttpStatusCode.Unauthorized);

    // do stuff
    // log stuff
  }
}

代码已执行,我可以在数据库中执行操作的结果。我还可以在浏览器中看到对请求的正确处理:

在此处输入图像描述

此外,来自控制器的所有日志及其嵌套逻辑都被写入文件。遗漏的是Application_BeginRequestandApplication_EndRequest部分(再次 - 仅适用于 PUT 请求)。

2021-10-04 09:50:50.4856 Application_BeginRequest

2021-10-04 09:50:50.4856 GET http://localhost:54646/... 从 ::1 请求

2021-10-04 09:50:50.4856 Application_BeginRequest

2021-10-04 09:50:50.4856 GET http://localhost:54646/... 从 ::1 请求

2021-10-04 09:50:50.5361 Application_EndRequest

2021-10-04 09:50:50.5517 Response.StatusCode SubStatusCode 为 200 0

2021-10-04 09:50:50.5647 Application_EndRequest

2021-10-04 09:50:50.5647 Response.StatusCode SubStatusCode 为 200 0

2021-10-04 09:51:05.7739

2021-10-04 09:51:05.7846 东西

2021-10-04 09:51:05.7846 东西

2021-10-04 09:51:05.7846 东西

2021-10-04 09:51:05.7972 Application_BeginRequest

2021-10-04 09:51:05.7972 GET http://localhost:54646/... 从 ::1 请求

有人可以解释一下吗?

标签: asp.netasp.net-mvcasp.net-mvc-5global-asax

解决方案


推荐阅读