【发布时间】:2020-08-01 10:38:59
【问题描述】:
我的 Blazor Server 应用程序和带有 Identity 的 IHttpContextAccessor 在生产中遇到问题。
当我尝试访问 HttpContext 时,这个在 Azure Web App 中为空,但在我的本地机器中却没有。
我使用这个网关来访问上下文:
public class AuthenticationGateway : IAuthenticationGateway
{
private IHttpContextAccessor _httpContextAccessor;
private UserManager<User> _userManager;
public AuthenticationGateway(IHttpContextAccessor httpContextAccessor, UserManager<User> userManager)
{
_httpContextAccessor = httpContextAccessor;
_userManager = userManager;
}
public bool IsLogguedIn()
{
return _httpContextAccessor.HttpContext.User.Identity.IsAuthenticated;
}
public async Task<User> GetLogguedUser()
{
return await _userManager.GetUserAsync(_httpContextAccessor.HttpContext.User);
}
}
我在 linux 下使用 B1 计划 webapp 与 Kestrel 一起工作
谁能帮帮我,这很成问题。
【问题讨论】:
-
你在
Startup.ConfigureServices方法中有services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();吗? -
还有一个扩展方法可以使用:
services.AddHttpContextAccessor(); -
我添加了 AddHttpContextAccessor 但什么也没做。我将尝试使用 TryAddSingleont 方法:)
-
检查是否在 Azure 应用中启用了 websocket。我有一种感觉,基于能够在本地访问上下文,但未部署在 Azure 中,它已关闭。
-
@viveknuna 与 tryaddsingleton 一起工作 :)
标签: c# azure asp.net-core cloud blazor