asp.net-web-api – 从OWIN中间件更改响应对象
发布时间:2020-05-27 23:28:15 所属栏目:asp.Net 来源:互联网
导读:我的OWIN中间件就是这样的。 (框架是ASP.NET Web API)。 public class MyMiddleware : OwinMiddleware{ public MyMiddleware(OwinMiddleware next) : base(next) { } public override async Task Invoke(OwinRequest requ
|
我的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 – 在aspnet核心1应用程序的逻辑层中获取ClaimsPri
- ASP.NET Web App和ASP.NET MVC 3 Empty Web App之间的区别?
- asp-classic – 经典ASP SQL注入
- asp.net – 拥有专用应用程序池,将Web应用程序保留在一个默
- asp.net-mvc – 为现有的基于MVC的网站创建REST API
- asp.net-mvc – 获取Route,ASP.net MVC中的当前片段
- asp.net-mvc-3 – DotNetOpenAuth.Asp在MVC4应用程序单元测
- asp.net-mvc-3 – 在MVC 3的AuthorizeAttribute中获取模型数
- asp.net-mvc – 将集合传递给EditorFor()时,它会为输入元素
- 如何配置asp.net与.net 4.5
推荐文章
站长推荐
- asp.net – Web发布的密码不同于我的Azure管理员
- asp.net-web-api – SignalR响应覆盖标头
- ASP.Net ListView按数据字段分组?
- asp.net-mvc-3 – ASP.Net Mvc 3 Url.Action方法
- 实体框架 – 带有实体框架的MVC 3和ASP.Net脚手架
- asp.net-mvc-2 – 如何在ASP.NET MVC2中枚举form
- asp.net-mvc-4 – Cshtml无法解析引用
- asp.net-mvc – 如何通过Resharper 8.2.1停止INC
- asp.net – IIS URL重写 – 具有多个域
- asp.net – NodaTime转换(第2部分).如何?
热点阅读
