Daa*_*aan 1 c# logging .net-core asp.net-core-webapi
在我的 .NET Core 2.2 Web Api 项目中,我想记录任何返回的状态代码。
我创建了一个标准 Web Api 项目并修改了一种方法来完成此任务。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.Use(async (context, next) =>
{
Console.WriteLine($"RESPONSE STATUSCODE + {context.Response.StatusCode}");
await next.Invoke();
});
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
我似乎是为定期电话而工作。例如,
curl --silent -i http://localhost:5000/api/values | grep HTTP
回报
HTTP/1.1 200 好
日志记录是:
响应状态代码 + 200
但是,当我执行此请求时
curl --silent -i http://localhost:5000/nonsense | grep HTTP
我得到这个返回:
HTTP/1.1 404 未找到
并且日志记录是相同的......
响应状态代码 + 200
我只想记录我返回的状态代码。就这样。这个怎么做?如果返回 200 似乎工作正常,但在其他情况下则不然。
发生这种情况是因为您的日志记录未正确放置在请求管道中,请在此处阅读相关内容。当您登录时,响应仍然是默认响应,状态代码为 200,管道尚未完成处理。
您需要将日志记录移至the last管道中以处理响应,并将调用移至next.Invoke()以下示例中:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use(async (context, next) =>
{
await next.Invoke();
Console.WriteLine($"RESPONSE STATUSCODE + {context.Response.StatusCode}");
});
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |