将 HttpContext 传递给 HttpResponse.OnStarting
Passing HttpContext to HttpResponse.OnStarting
我正在处理的项目包含使用 OnStarting 方法的中间件,并将 HttpContext 作为第二个参数传递,如下所示:
context.Response.OnStarting(async state =>
{
var context = (HttpContext)state;
await SetSafeStatusCode(context);
}, context);
await _next(context);
我见过使用这种方法而不传递上下文的示例,如下所示:
context.Response.OnStarting(async () =>
{
await SetSafeStatusCode(context);
});
await _next(context);
我在测试第二个选项时没有发现任何差异。是否有任何理由将调用此方法的相同上下文作为第二个参数传递?
第一种方法允许(可能在未来)状态和上下文确实是不同事物的可能性。也许在某些当前情况下它们是不同的东西。
它还允许更容易的单元测试,因为测试可以直接调用 OnStarting
,而无需构建完整的 HttpContext
。
我正在处理的项目包含使用 OnStarting 方法的中间件,并将 HttpContext 作为第二个参数传递,如下所示:
context.Response.OnStarting(async state =>
{
var context = (HttpContext)state;
await SetSafeStatusCode(context);
}, context);
await _next(context);
我见过使用这种方法而不传递上下文的示例,如下所示:
context.Response.OnStarting(async () =>
{
await SetSafeStatusCode(context);
});
await _next(context);
我在测试第二个选项时没有发现任何差异。是否有任何理由将调用此方法的相同上下文作为第二个参数传递?
第一种方法允许(可能在未来)状态和上下文确实是不同事物的可能性。也许在某些当前情况下它们是不同的东西。
它还允许更容易的单元测试,因为测试可以直接调用 OnStarting
,而无需构建完整的 HttpContext
。