我有一种情况,我在客户端中的设置代码中使用通知事件非常简单,如下所示。这是一个使用AspNetCore IdentityServer4的AspNet Mvc 4.72客户端:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "members",
...
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = notification =>
{
...
// Sometimes this is null but I have to make sure it is
// always available so I can initialize stuff here.
HttpContext.Current.<Use context here>;
return Task.CompletedTask;
}
}
});
实际上,更具体地说,我需要访问会话状态,但是没关系,还有其他一些直接相关的需求。我不太确定为什么会这样,但是从我的研究来看,它与SynchronizationContext和AspNet Mvc请求的生存期有关。
如果有人对如何确保HttpContext的存在有明确的答案,请告诉我。