大佬教程收集整理的这篇文章主要介绍了asp.net-web-api – 从OWIN中间件更改响应对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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调用之前设置了响应头或状态,那么带有头的响应和我设置的状态将返回给客户端。设置这些的正确方法是什么?
您可以尝试的是使用OWIN提供的OnSendingHeaders回调。以下是如何使用它:
public override async Task Invoke(IOwinCo@R_616_10443@t co@R_616_10443@t) { var response = co@R_616_10443@t.Response; var request = co@R_616_10443@t.request; response.onSendingHeaders(state => { var resp = (OwinResponsE)state; resp.Headers.Add("X-MyResponse-Header","Some Value"); resp.StatusCode = 403; resp.ReasonPhrase = "Forbidden"; },responsE); var header = request.Headers["X-whatever-Header"]; await Next.Invoke(co@R_616_10443@t); }
感谢biscuit314更新我的答案。
以上是大佬教程为你收集整理的asp.net-web-api – 从OWIN中间件更改响应对象全部内容,希望文章能够帮你解决asp.net-web-api – 从OWIN中间件更改响应对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。