asp.net - 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_BeginRequest
andApplication_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 请求
有人可以解释一下吗?
解决方案
推荐阅读
- iis - IIS URL Rewrite 2.1 跳过已经存在的文件
- c# - 使用 C# 用 IText7 替换 pdf 中的数字
- amazon-web-services - 重新启动后弹性 IP 地址被解除关联
- excel - 两个工作簿之间的 VLookUp(无 VBA)
- python - 用于格式化字符串的 Python 解包列表
- automation - 如何在系统的特定位置找到任何“txt”文件?
- firebase - 每个应用程序启动都会调用“firebaseUser.getIdToken(refresh: true);”吗?
- java - Spring Boot Kafka Consumer 未消费,Kafka Listener 未触发
- angular - 何时使用 createSpy、createSpyObject 和 spyOn?
- javascript - 屏幕上的 Javascript 触发器(进度条)