的反应在我的OWIN的应用程序,我注册了一个中间件下来拦截其他中间件成果的管道,如果条件满足,我需要完全改变从不管它是响应(可能是302
或200
)至403
(禁止)。改写Owin中间件
有一个不是很干净的方式,那就是手动清除所有标头,内容类型等,并将statusCode设置为403
,但这种感觉对我来说是一种错误的方法。
public override async Task Invoke(IOwinContext context)
{
await this.Next.Invoke(context);
if (someCondition(context))
{
var headers = context.Response.Headers;
headers.Keys.ForEach(k => headers.Remove(k));
context.Response.StatusCode = 403;
context.Response.ContentType = string.Empty;
context.Response.ContentLength = null;
await context.Response.WriteAsync(string.Empty);
}
}
加的事实,这种做法不重写200
响应时工作(当它击中我们设置StatusCode
线,就跳出并刷新响应)。
我是OWIN的新手,我可能会误解它的工作方式。
有没有其他方法可以做到这一点?
但'somecondition'要看什么'Next.Invoke'做的'context' –