C# ClaimTypes.NameIdentifier在Blazor WebAssembly ASP.NET核心托管中始终返回null

C# ClaimTypes.NameIdentifier在Blazor WebAssembly ASP.NET核心托管中始终返回null,c#,asp.net-core,blazor,asp.net-authorization,blazor-webassembly,C#,Asp.net Core,Blazor,Asp.net Authorization,Blazor Webassembly,我已经安装了一个Blazor WebAssembly ASP.NET核心托管的应用程序,并将身份验证系统以及自定义的AuthenticationProvider集成到客户端。在服务器端项目中,我在控制器中调用以下命令: [HttpGet] 公共异步任务GetObjects() { var id=User.FindFirstValue(ClaimTypes.NameIdentifier);//您需要通过将此代码添加到Startup.ConfigureServices在服务器应用程序上设置UserI

我已经安装了一个
Blazor WebAssembly ASP.NET核心托管的
应用程序,并将身份验证系统以及自定义的
AuthenticationProvider
集成到客户端。在服务器端项目中,我在控制器中调用以下命令:

[HttpGet]
公共异步任务GetObjects()
{

var id=User.FindFirstValue(ClaimTypes.NameIdentifier);//您需要通过将此代码添加到
Startup.ConfigureServices
在服务器应用程序上设置
UserIdClaimType

services.Configure<IdentityOptions>(options => 
    options.ClaimsIdentity.UserIdClaimType = ClaimTypes.NameIdentifier);
services.Configure(选项=>
options.ClaimsIdentity.UserIdClaimType=ClaimTypes.NameIdentifier);

阅读更多内容

感谢您的回复!没错,缺少服务器依赖项,但现在我遇到了一个异常:
System.NullReferenceException:“对象引用未设置为对象的实例。”
我注意到,用户在控制器内通常为空。我是否缺少任何依赖项注册?我认为控制器默认情况下可以访问用户,而不集成任何httpcontext。服务器应用程序的设置是什么?在客户端/服务器模型中,我们应该使用访问令牌调用服务器应用程序中受保护的资源API。and服务器应用程序应该被设置为读取令牌并获得授权-您能确认这是您所拥有的吗?感谢您的参考。帮助解决了我的GetUserAsync(User)返回Null的问题。必须将其设置为正确的ClaimTypes。