gpt4 book ai didi

azure - 应用程序服务上的 httpcontextaccessor 空引用,但不进行调试

转载 作者:行者123 更新时间:2023-12-02 06:28:12 25 4
gpt4 key购买 nike

我有一个无法解释的奇怪问题。

我的 Blazor 服务器端应用程序中有一个帮助程序类,它为我的应用程序执行 arb 功能。我在启动时添加了 services.AddHttpContextAccessor();

在我的助手类中声明它

public GlobalHelper(IHttpContextAccessor accessor, 
IOptions<AzureADB2COptions> azureAdB2COptions,
IConfiguration configuration

)
{
_accessor = accessor;
AzureAdB2COptions = azureAdB2COptions.Value;
Configuration = configuration;

}

然后有一个函数返回用户ID:

 public string GetUserID()
{
var context = _accessor.HttpContext;


return context.User.FindFirst(ClaimTypes.NameIdentifier).Value;

然后在我的页面中,我只想首先在按钮单击事件上显示它:

 @inject Classes.GlobalHelper _helper

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>


@code {

string currentCount = "test";

void IncrementCount()
{
var test4 = httpContextAccessor.HttpContext;

var authState = AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.Result.User;
if (user.Identity.IsAuthenticated)
{

try
{


currentCount = _helper.GetUserID().Result;

}
catch (Exception ex)
{

currentCount = ex.ToString();
}


}
else
{
Console.WriteLine("The user is NOT authenticated.");
}


}
}

如果我只是在本地调试,则效果很好。一旦我将其发布到 Azure 中的应用服务...我在访问 globalhelper 类中的 httpcontextaccessor 时收到 nullreferenceException 。这一行:

return context.User.FindFirst(ClaimTypes.NameIdentifier).Value;

我可能做错了什么,导致应用程序服务中的 httpcontext 为空,而不是在本地计算机上的调试中?

最佳答案

至少在大多数时候,HttpContext 在 Blazor 服务器应用程序中不可用。您不应尝试访问它,也不应使用 IHttpContextAccessor。在这里阅读更多内容: https://github.com/aspnet/AspNetCore/issues/14090 https://github.com/aspnet/AspNetCore/issues/13903 https://github.com/aspnet/AspNetCore/issues/12432#issuecomment-534315513 https://github.com/aspnet/AspNetCore/issues/5330#issuecomment-413928731

注意:您可以通过 AuthenticationStateProvider 对象和授权组件(例如 AuthorizeViewAuthorizeRouteView)访问 Blazor 服务器应用程序中的身份验证状态>CascadingAuthenticationState 取决于您想要执行的操作。

关于azure - 应用程序服务上的 httpcontextaccessor 空引用,但不进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59111924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com