我的 OWIN 中间件是这样的。(框架是 ASP.NET Web API)。
public class MyMiddleware : OwinMiddleware
{
public MyMiddleware(OwinMiddleware next) : base(next) { }
public override async Task Invoke(OwinRequest request, OwinResponse response)
{
var header = request.GetHeader("X-Whatever-Header");
await Next.Invoke(request, response);
response.SetHeader("X-MyResponse-Header", "Some Value");
response.StatusCode = 403;
}
}
问题:
这是推荐的做法
OwinMiddleware
吗?我看到在 Katana 源代码中,一些中间件类派生自OwinMiddleware
,而有些则没有。我可以看到请求标头没问题。在我的中间件中设置响应头或状态码
Next.Invoke
对返回给客户端的响应没有影响。但是,如果我在Next.Invoke
调用之前设置了响应标头或状态,则带有标头的响应和我设置的状态将返回给客户端。设置这些的正确方法是什么?