asp.net-web-api – 从OWIN中间件更改响应对象
发布时间:2020-12-16 00:45:57 所属栏目:asp.Net 来源:网络整理
导读:我的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 h
我的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,有些不是。 解决方法
是的,推荐来自OwinMiddleware。一些中间件类不是从OwinMiddleware派生的原因是,由于最近推出了类,所以它们还没有切换。或者为了避免由于某些原因组件对Microsoft.Owin程序集的依赖。
调用Invoke on Next之后,响应的可能原因设置不起作用,只要任何人开始写入响应主体流,响应HTTP头就会被发送。所以在中间件组件开始写入响应体之后,状态代码或HTTP头的任何更改都不会有任何影响。 您可以尝试的是使用OWIN提供的OnSendingHeaders回调。以下是如何使用它: public override async Task Invoke(IOwinContext context) { var response = context.Response; var request = context.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(context); } 感谢biscuit314更新我的答案。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 应用程序级排队/网站流量管理
- asp.net-core – Visual Studio 2017(ASP.NET Core)和Aurel
- asp.net – 反伪造cookie令牌和表单字段令牌在MVC 4中不匹配
- asp.net – Response.TrySkipIisCustomErrors不工作
- asp.net-mvc – FormsAuthentication LoginUrl
- asp.net – 多个选择列表框而不按CTRL
- ASP.NET用户控件内部内容
- ASP.NET MVC学习之NuGet在VS中的运用浅谈
- asp.net – 我们可以在网页中使用多种形式吗?
- ASP.NET Url重写
推荐文章
站长推荐
- asp.net – 在Web应用程序中排队长时间运行的任务
- 我应该如何组织我的ASP.Net主题和常见的CSS文件
- asp.net – AppHarbor上的MongoDB成员资格提供程
- asp.net-mvc-3 – 我可以在MVC3中扩展ModelState
- asp.net-mvc-2 – 在asp.net MVC中的表中插入多行
- asp.net – 如何在Web应用程序中使用ServiceStac
- asp.net-web-api – 在Windows服务中使用OWIN托管
- asp.net-mvc – 在表单提交时传递整个模型
- asp.net – 如何使用DataReader填充DataTable
- asp.net-mvc – 在MVC3 Razor视图引擎中设置文本
热点阅读