簡體   English   中英

您如何解決錯誤“無法加載文件或程序集'microsoft aspnetcore razor runtime 3.1 1”,

[英]How do you solve the error “could not load file or assembly 'microsoft aspnetcore razor runtime 3.1 1”,

我之前已經發布過這個問題,但是作為新手,我想學習如何寫一個“正確”的問題(以防你試圖幫助我而我沒有立即回復,如果不是全部的話,我想把它做對希望我已經掌握了竅門)

這只是注冊/登錄代碼,其目的是不言自明的,出現錯誤(無法加載文件或程序集 'microsoft aspnetcore razor 運行時 3.1 1)發生在 AddControllers() 方法中的服務注冊 class 中,我嘗試添加錯誤中指定的 package 但它不起作用,我嘗試了其他一些類似的包但結果相同,當我構建時我沒有收到錯誤或警告但是當應用程序運行時我收到錯誤,希望這是足夠的數據來處理。

//controller class Login and registration
        [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
            public class IdentifyMe : Controller
            {
                private readonly IIdentify _identify;
        
                public IdentifyMe(IIdentify identifying)
                {
                    _identify = identifying;
                }
        
                [HttpGet(Api_Routes.Identity.Register)]
                public async Task<IActionResult> Register(UserRegistration register)
                {
                    if (!ModelState.IsValid)
                    {
                        return BadRequest(new Unauthenticated
                        {
                            Errors=ModelState.Values.SelectMany(x=>x.Errors.Select(xx=>xx.ErrorMessage))
                        });
                    }
        
        
                    var authresponce = await _identify.RegisterAsync(register.Email, register.Password, register.User_Name);
        
                    if (!authresponce.Success)
                    {
                        return BadRequest(new Unauthenticated
                        {
                            Errors = authresponce.Errors
                        });
                    }
                    return Ok(new Authenticated
                    {
                        Token = authresponce.Token
                    });
                }
        
        
        
                [HttpGet(Api_Routes.Identity.Login)]
                public async Task<IActionResult> LoginAsync(User_login login)
                {
                    var authresponce = await _identify.LoginAsync(login.Password, login.email);
        
                    if (!authresponce.Success)
                    {
                        return BadRequest(new Unauthenticated
                        {
                            Errors = authresponce.Errors
                        });
                    }
                    return Ok(new Authenticated
                    {
                        Token = authresponce.Token
                    });
                }
        
        
            }
        
        // service registration
        
        public class Dbinstaller : IInstaller
        {
            public void Cleanner(IConfiguration configuration, IServiceCollection services)
            {
                var jwt = new JWTsettings();
                configuration.Bind(nameof(jwt), jwt);
                services.AddSingleton(jwt);
        
                services.AddAuthentication(x =>
                {
                    x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    x.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                    x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                    .AddJwtBearer(x =>
                    {
                        x.SaveToken = true;
                        var TokenValidationParameters = new TokenValidationParameters
                        {
                            ValidateIssuerSigningKey = true,
                            IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwt.Secret)),
                            ValidateIssuer = false,
                            ValidateAudience = false,
                            RequireExpirationTime = false,
                            ValidateLifetime = true
                        };
                    });
        
        
                services.AddSwaggerGen(x =>
                {
                    x.SwaggerDoc("v1", new OpenApiInfo { Title = "TXC API", Version = "v1" });
        
                    var security = new Dictionary<string, IEnumerable<string>>
                    {
                        {"Bearer", new string[0]}
                    };
        
                    x.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                        { 
                         Description="JWT Authorization Header using the bearer scheme",
                         Name="Authorization",
                         In=ParameterLocation.Header,
                         Type=SecuritySchemeType.ApiKey
                        });
                    x.AddSecurityRequirement(new OpenApiSecurityRequirement
                    {
                        {new OpenApiSecurityScheme{Reference=new OpenApiReference
                        {
                            Id="Bearer",
                            Type=ReferenceType.SecurityScheme
                        }
                        },new List<string>() }
                    });
                });
        
                
        
        
        
                services.AddDbContext<DataContext>(opt =>
                opt.UseSqlServer(configuration.GetConnectionString("TXC Connection")));
                services.AddIdentityCore<IdentityUser>();
            }
        }
        
        
        
        
            //service registration, specified error occurs in Add controllers()    
                 public class In_App_Componentes : IInstaller
                    {
                        public void Cleanner(IConfiguration configuration, IServiceCollection services)
                        {
                            services.AddControllers().AddNewtonsoftJson(p => p.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());
                            services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
                            services.AddScoped<IX_Change, The_center>();
                            services.AddScoped<IIdentify, Identify>();
                        }
                    }
    
    //service implementation class
    public class Identify : IIdentify
        {
            private readonly UserManager<IdentityUser> _manager;
    
            private readonly JWTsettings jwtset;
    
    
    
            public Identify(UserManager<IdentityUser> userManager, JWTsettings jW)
            {
                _manager = userManager;
                jwtset = jW;
            }
    
           
    
            public async Task<Authentication_result> RegisterAsync(string email, string password, string Username)
            {
                var exists = _manager.FindByEmailAsync(email);
    
                if (exists != null)
                {
                    return new Authentication_result
                    {
                        Errors = new[] { "User with this email already exists" }
                    };
                }
    
                var newPerson = new IdentityUser
                {
                    Email = email,
                    UserName = Username
                };
    
                var Creation = await _manager.CreateAsync(newPerson, password);
    
                if (!Creation.Succeeded)
                {
                    return new Authentication_result
                    {
                        Errors = new[] { "Invalid user!" }
                    };
                }
    
                return Generate_Authentication_Result(newPerson);
            }
    
            public async Task<Authentication_result> LoginAsync(string email, string Password)
            {
                var user = await _manager.FindByEmailAsync(email);
    
                if (user == null)
                {
                    return new Authentication_result
                    {
                        Errors = new[] { "User does not exists" }
                    };
                }
    
                var validate_password = await _manager.CheckPasswordAsync(user, Password);
    
                if (!validate_password)
                {
                    return new Authentication_result
                    {
                        Errors = new[] { "" }
                    };
                }
    
                return Generate_Authentication_Result(user);
            }
    
            private Authentication_result Generate_Authentication_Result(IdentityUser newPerson)
            {
                var Tokenhandler = new JwtSecurityTokenHandler();
                var key = Encoding.ASCII.GetBytes(jwtset.Secret);
                var TokenDescripter = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new[]
                   {
                       new Claim(JwtRegisteredClaimNames.Sub, newPerson.Email),
                       new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                       new Claim(JwtRegisteredClaimNames.Email, newPerson.Email),
                       new Claim("id",newPerson.Id)
    
                   }),
    
                    Expires = DateTime.UtcNow.AddHours(2),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
    
                var token = Tokenhandler.CreateToken(TokenDescripter);
    
                return new Authentication_result
                {
                    Success = true,
                    Token = Tokenhandler.WriteToken(token)
                };
            }
        }

Ciao,我試圖在 NuGet 上搜索Microsoft.AspNetCore.Razor.Runtime v. 3.1.1但我只找到了 2.2.0。 我沒有找到對 3.1.1 的任何引用。 無論如何,將Microsoft.AspNetCore.Identity.UI to 3.1.0應該可以解決這里提到的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM