使用HttpContext时Blazor抛出错误



我想在用户打开网站时获得当前windows用户名。我的应用程序使用Blazor服务器端。为了获得当前用户名,我添加了:

  1. 在启动时。cs:
    services.AddHttpContextAccessor();(在ConfigureServices(
  2. 在剃刀页面中:
    @inject IHttpContextAccessor httpContextAccessor
  3. 在剃刀页面方法中:
    string userName = httpContextAccessor.HttpContext.User.Identity.Name;

当我执行代码时,应用程序抛出一个异常:

"出现错误。此应用程序在重新加载之前可能不再响应">

只有在IIS上部署时才会出现此错误。在本地机器上运行良好。

我在尝试使用Blazor访问HttpContext以获取用户信息时遇到了类似的问题。我在这里找到了这个救命稻草。在IIS中运行web应用程序时,HttpContext为NULL为了解决这个问题,我所要做的就是在IIS中启用WebSockets。

以下是步骤:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-3.1#iiiis express支持

如果要从更改该字符串

string userName = httpContextAccessor.HttpContext.User.Identity.Name

string userName = httpContextAccessor?.HttpContext?.User?.Identity?.Name??"Anonymous"

那么它可能会起作用。

这是因为您的IIS设置允许匿名访问,因此您的Identity对象为null。

您应该检查应用程序崩溃背后的内部异常,但这将是您的问题。您需要阻止IIS上的匿名访问才能通过Windows身份验证。

要管理IIS,请参阅此处https://stackoverflow.com/a/5458963/12285843

相关内容

  • 没有找到相关文章

最新更新