【问题标题】:Net Core 3.0 Linux Azure Web App IHttpContextAccessor have null contextNet Core 3.0 Linux Azure Web App IHttpContextAccessor 有空上下文
【发布时间】: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&lt;IHttpContextAccessor, HttpContextAccessor&gt;();吗?
  • 还有一个扩展方法可以使用:services.AddHttpContextAccessor();
  • 我添加了 AddHttpContextAccessor 但什么也没做。我将尝试使用 TryAddSingleont 方法:)
  • 检查是否在 Azure 应用中启用了 websocket。我有一种感觉,基于能够在本地访问上下文,但未部署在 Azure 中,它已关闭。
  • @viveknuna 与 tryaddsingleton 一起工作 :)

标签: c# azure asp.net-core cloud blazor


【解决方案1】:

请在 Startup.ConfigureServices 方法中添加以下代码

services.TryAddSingleton&lt;IHttpContextAccessor, HttpContextAccessor&gt;();

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 2019-08-14
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多