我发送带有 Authorization 标头的请求。如果您通过自定义中间件查看请求数据,那么它就在那里
接下来是控制器。
[HttpGet]
[ActionName("GetUserData")]
public string GetUserData()
{
return HttpContext.User.Claims.FirstOrDefault(x=>x.Type=="Email").Value;
}
然后标题和声明一起消失在某个地方
为什么请求数据在到达控制器之前就消失了?
配置方法如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseAuthentication();
//MyMiddleware в этом не причастен, пробовал его убирать
app.UseMiddleware<MyMiddleware>();
app.UseHttpsRedirection();
app.UseMvc();
}
我注意到虽然我使用 http 协议向端口 5000 发送请求,但 HttpContext.Request.Scheme 控制器具有 https 值。我挖了一圈,找到了原因。
按照标准,项目属性中的Web服务器设置如下:
如果这里的所有协议都采用相同的形式(http 或 https),那么请求数据不会消失并到达控制器。我不知道为什么,但如果有人能解释这种现象,我将不胜感激。