【发布时间】:2018-10-19 13:39:01
【问题描述】:
喏,
我正在开发一系列带有 aspnet 核心的微服务。我想在 500 个响应上返回一个自定义的 http 标头。
我尝试创建一个自定义 ASP.NET Core Middleware 来更新 context.Response.Headers 属性,但它仅在响应为 200 时才有效。
这是我的自定义中间件:
namespace Organizzazione.Progetto
{
public class MyCustomMiddleware
{
private readonly RequestDelegate _next;
public ExtractPrincipalMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
context.Response.Headers.Add("X-Correlation-Id", Guid.NewGuid());
await _next.Invoke(context);
return;
}
}
}
这是我的配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMiddleware<MyCustomMiddleware>();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API");
});
}
如何在由未处理异常(或可能在所有响应上)引起的 500 响应中返回我的自定义标头?
非常感谢
【问题讨论】:
-
是什么导致了 500 响应?未捕获的异常?如果是这样,您可以编写一个修改响应标头的全局异常处理中间件。
-
嗨,克里斯,500 响应是我未捕获的异常引起的。我更新了这个问题以澄清这个概念。谢谢
标签: c# asp.net-core middleware custom-headers