将 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