ASP.Net Core 2.0 如何获取中间件中的所有请求标头? [复制]

     2023-03-10     102

关键词:

【中文标题】ASP.Net Core 2.0 如何获取中间件中的所有请求标头? [复制]【英文标题】:ASP.Net Core 2.0 How to get all request headers in middleware? [duplicate] 【发布时间】:2018-08-24 18:06:34 【问题描述】:

在 ASP.Net Core 2.0 中,我尝试在自定义中间件中验证传入的请求标头。

问题是我不知道如何提取所有键值对标头。我需要的标头存储在受保护的属性中

protected Dictionary<string, stringValues> MaybeUnknown

到目前为止,我的中间件类看起来像这样:

public class HeaderValidation

    private readonly RequestDelegate _next;
    public HeaderValidation(RequestDelegate next)
    
        _next = next;
    

    public async Task Invoke(HttpContext httpContext)
    
        IHeaderDictionary headers = httpContext.Request.Headers; // at runtime headers are of type FrameRequestHeaders

        // How to get the key-value-pair headers?
        // "protected Dictionary<string, stringValues> MaybeUnknown" from headers is inaccessbile due to its protection level
        // Casting headers as Dictionary<string, StringValues> results in null

        await _next.Invoke(httpContext);
    

我的目标是提取所有请求标头,而不仅仅是一些我必须知道特定键的选定标头。

【问题讨论】:

IHeaderDictionary 实现了 IDictionary,你应该可以使用所有普通的 IDictionary API。 var contentType = headers["Content-Type"]; https://***.com/questions/38794749/how-to-extract-custom-header-value?的可能重复 感谢大家的投入,我能够得到我想要的。为了获得我需要创建一个以 IHeaderDictionary 作为输入的新 Dictionary 所需的所有标题,就像这样:var headerDictionary = new Dictionary&lt;string, StringValues&gt;(headers) @philipp-fx - 你应该在这里回答你自己的问题并接受答案。这个技巧真的很有用,而且绝对不是另一个问题的重复 :( - 很遗憾答案在 cmets 中很混乱。 【参考方案1】:

httpContext.Request.HeadersDictionary。您可以通过将标头名称作为键来返回标头的值:

context.Request.Headers["Connection"].ToString()

【讨论】:

感谢马克的回答!现在我知道如何提取我知道密钥的标题了。这已经很有帮助了,因为我根本不知道如何提取任何键值对标头。尽管如此,我的目标是提取所有标题,并且我想避免需要知道所有键。 我能够通过创建一个以headers 变量作为输入的新字典来获得我想要的东西。谢谢!

ASP.Net Core 2.0 - 如何从中间件返回自定义 json 或 xml 响应?

】ASP.NetCore2.0-如何从中间件返回自定义json或xml响应?【英文标题】:ASP.NetCore2.0-Howtoreturncustomjsonorxmlresponsefrommiddleware?【发布时间】:2018-08-2414:09:25【问题描述】:在ASP.NetCore2.0中,我试图返回格式为json或xml的消息,并带有状态... 查看详情

如何在 Asp.Net Core 2.0“AddJwtBearer”中间件中设置多个受众?

】如何在Asp.NetCore2.0“AddJwtBearer”中间件中设置多个受众?【英文标题】:HowtosetmultipleaudiencesinAsp.NetCore2.0"AddJwtBearer"middleware?【发布时间】:2018-04-0923:20:04【问题描述】:我有一个针对AAD进行身份验证的Asp.NetCore2.0WebApi:s... 查看详情

ASP.NET Core 2.0 身份验证中间件

】ASP.NETCore2.0身份验证中间件【英文标题】:ASP.NETCore2.0authenticationmiddleware【发布时间】:2018-01-3000:26:44【问题描述】:Core1.1遵循@blowdart的建议并实现了自定义中间件:https://***.com/a/31465227/29821它是这样工作的:中间件已运行。... 查看详情

ASP.Net Core 2.0 - ResponseCaching 中间件 - 不在服务器上缓存

】ASP.NetCore2.0-ResponseCaching中间件-不在服务器上缓存【英文标题】:ASP.NetCore2.0-ResponseCachingMiddleware-NotCachingonServer【发布时间】:2018-06-2207:24:14【问题描述】:我想在asp.netcore2.0中使用服务器端响应缓存(输出缓存),发现了Respons... 查看详情

Asp.Net Core 2.0 中的“HttpPostedFileBase”

...用API(使用.NETCore2.0开发)的ReactJS应用程序。我的问题是如何在.NETCore2.0API中使用HttpPostedFileBase以获取文件内容并将其保存在数据库中。【 查看详情

从 ASP.NET Core 2.0 API 中的 JWT 令牌获取声明

...分使用cookie,而在API部分,我想使用JWT令牌。我的问题是如何从JWTt 查看详情

如何在 ASP.NET Core 2.0 中根据路由配置服务身份验证

】如何在ASP.NETCore2.0中根据路由配置服务身份验证【英文标题】:HowtoConfigureServicesAuthenticationbasedonroutesinASP.NETCore2.0【发布时间】:2018-03-0922:06:40【问题描述】:在ASP.NETCore1.x中,我可以在Configure中使用身份验证方法,但现在在ASP... 查看详情

如何在 ASP.NET Core 2.0 Razor 页面中填充下拉列表

】如何在ASP.NETCore2.0Razor页面中填充下拉列表【英文标题】:HowtopopulatedropdownlistInASP.NETCore2.0Razorpage【发布时间】:2018-02-0702:23:31【问题描述】:我想从我的数据库中填充下拉列表。剃须刀页面中模型绑定的方式是什么publicIActionRe... 查看详情

如何在 Asp.net core 2.0 中使用 log4net

】如何在Asp.netcore2.0中使用log4net【英文标题】:Howtouselog4netinAsp.netcore2.0【发布时间】:2018-02-2012:23:18【问题描述】:我在我的asp.netcore2.0应用程序中配置了log4net,如本文所述LINK程序.cspublicstaticvoidMain(string[]args)varlogRepository=LogMana... 查看详情

如何在 ASP.NET Core 中间件中直接将响应正文设置为文件流?

】如何在ASP.NETCore中间件中直接将响应正文设置为文件流?【英文标题】:HowtodirectlysetresponsebodytoafilestreaminASP.NETCoremiddleware?【发布时间】:2020-02-2709:59:44【问题描述】:以下用于在ASP.NETCore中间件中将文件流写入Response.Body的示... 查看详情

ASP.NET Core Web API - 如何在中间件管道中隐藏 DbContext 事务?

】ASP.NETCoreWebAPI-如何在中间件管道中隐藏DbContext事务?【英文标题】:ASP.NETCoreWebAPI-HowtohideDbContexttransactioninthemiddlewarepipeline?【发布时间】:2020-02-0203:01:55【问题描述】:我正在构建3层ASP.NETCoreWebAPI。它由数据、业务(核心)和W... 查看详情

如何在 asp net core 2.2 中间件中多次读取请求正文?

】如何在aspnetcore2.2中间件中多次读取请求正文?【英文标题】:Howtoreadrequestbodymultipletimesinaspnetcore2.2middleware?【发布时间】:2019-06-2320:23:48【问题描述】:我试过这个:Readrequestbodytwice和这个:https://github.com/aspnet/Mvc/issues/4962但... 查看详情

如何使用 MVC 的内容协商在 ASP.NET Core MVC 中间件中返回响应?

】如何使用MVC的内容协商在ASP.NETCoreMVC中间件中返回响应?【英文标题】:HowcanIreturnaresponseinASP.NETCoreMVCmiddlewareusingMVC\'scontentnegotiation?【发布时间】:2018-01-1214:23:22【问题描述】:我有一些ASP.NETCoreMVC中间件来捕获我想从中返回... 查看详情

如何从 HttpContext 获取 ASP.NET Core MVC 过滤器

...间】:2018-02-1400:15:53【问题描述】:我正在尝试编写一些中间件,并且需要知道当前操作方法(如果有)是否具有特定的过滤器属性,因此我可以根据它的存在来更改行为。那么当您实现IResourceFilter时,是否可以像在ResourceExecut 查看详情

如何使用 Url.Action 在 asp.net core 2.0 razor 页面中传递多个操作

】如何使用Url.Action在asp.netcore2.0razor页面中传递多个操作【英文标题】:Howtopassmultipleactionsinasp.netcore2.0razorpageusingUrl.Action【发布时间】:2018-07-1514:45:23【问题描述】:我想使用@Url.Action通过ASP.NETCore2.0Razor页面中的URL传递多个参数... 查看详情

如何在 ASP.NET Core 2.0 中预编译视图?

】如何在ASP.NETCore2.0中预编译视图?【英文标题】:HowtoprecompileviewsinASP.NETCore2.0?【发布时间】:2018-09-0919:29:48【问题描述】:我根据article设置了我的解决方案。我省略了一些内容,因为根据this,ASP.NETCore2.0默认预编译视图。最... 查看详情

ASP.NET Core 2.0 MVC 6. 如何管理每个视图的javascript文件?

】ASP.NETCore2.0MVC6.如何管理每个视图的javascript文件?【英文标题】:ASP.NETCore2.0MVC6.Howtomanagejavascriptfileforeachview?【发布时间】:2018-02-0115:56:09【问题描述】:ASP.NETCoreMVC6如何管理每个视图的javascript文件?我查看了特定的javascript文... 查看详情

如何在 Visual Studio 2017 Web Proj ASP.NET Core 2.0 中禁用 Https

】如何在VisualStudio2017WebProjASP.NETCore2.0中禁用Https【英文标题】:HowToDisableHttpsinVisualStudio2017WebProjASP.NETCore2.0【发布时间】:2018-03-1210:24:16【问题描述】:我在VisualStudio2017中使用ASP.NETCore2.0创建了一个默认项目。我选择了带有MVC和... 查看详情