Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# User.Identity空指针异常与SPA(Angular)visual studio Angular模板_C#_Asp.net_Asp.net Core_Asp.net Identity_Visual Studio Templates - Fatal编程技术网

C# User.Identity空指针异常与SPA(Angular)visual studio Angular模板

C# User.Identity空指针异常与SPA(Angular)visual studio Angular模板,c#,asp.net,asp.net-core,asp.net-identity,visual-studio-templates,C#,Asp.net,Asp.net Core,Asp.net Identity,Visual Studio Templates,我正在使用visual studio angular模板创建项目,试图访问用户声明user.Identity.Name。由于用户为null,因此获取null指针异常 我已经按照这里的指示做了 它使用AddApiAuthorization、AddIdentityServerJwt、OIDCConfiguration控制器 Startup.cs services.AddIdentityServer() .AddApiAuthorization<Applicat

我正在使用visual studio angular模板创建项目,试图访问用户声明
user.Identity.Name
。由于用户为null,因此获取null指针异常

我已经按照这里的指示做了

它使用AddApiAuthorization、AddIdentityServerJwt、OIDCConfiguration控制器

Startup.cs

services.AddIdentityServer()
                .AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
                .AddProfileService<ProfileService>();
            
            services.AddAuthentication()
                .AddIdentityServerJwt();

 app.UseAuthentication();
            app.UseIdentityServer();
            app.UseAuthorization();

 app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";
                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start");
                }
            });
Startup.cs
services.AddIdentityServer()

.AddApiAuthorization

不是用户为空,而是HttpContext为空

HttpContext在构造函数中被调用,然后还没有实例化HttpContext,因为当客户端连接到此控制器时会发生这种情况。将代码移动到控制器中的方法中,您将发现HttpContext已设置

    [Authorize]
    public abstract class BaseController : ControllerBase
        {
           
            private readonly UserManager<ApplicationUser> _userManager;
            public BaseController()
            {
var identity = HttpContext.User.Identity as ClaimsIdentity;
                var user =  _userManager.FindByNameAsync(User.Identity.Name).Result;
                
            }
        }