My OWIN middleware is like this. (Framework is 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;
}
}
Questions:
Is it the recommended practice to derive from
OwinMiddleware
? I see that in Katana source, some of the middleware classes derive fromOwinMiddleware
and some do not.I can see the request headers okay. Setting response header or status code after
Next.Invoke
in my middleware has no effect on the response returned to the client. But if I set the response header or status before theNext.Invoke
call, the response with headers and the status that I set is returned to the client. What is the right way of setting these?