【问题标题】:Centos Linux Self Contained (SCD) ASP.NET Core Application startup exceptionCentos Linux 自包含 (SCD) ASP.NET Core 应用程序启动异常
【发布时间】:2019-05-17 06:12:14
【问题描述】:

你好,我所有的英雄 :) 我是 Linux 新手。我使用身份创建了一个 .net 核心 Web 应用程序。我想发布自包含的。我安装了所有必需的 linux 库。授予文件系统权限。它在我的本地虚拟机上运行。但在我的 digitalocaen 液滴上却没有。 :(请帮帮我。

这是我调用可执行文件时的控制台输出。

信息:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0] 用户配置文件可用。使用“/root/.aspnet/DataProtection-Keys”作为密钥存储库;密钥不会在静止时加密。 应用程序启动异常:System.Exception:无法解析类型为“Microsoft.AspNetCore.Identity.UserManager1[[cihanturan.WebUI.Areas.Admin.Models.ApplicationUser, cihanturan.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' for the parameter 'userManager' of method 'Configure' on type 'cihanturan.WebUI.Startup'. ---> System.ArgumentException: Format of the initialization string does not conform to specification starting at index 84. at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary2 可解析、字符串 connectionString、布尔 buildChain、Dictionary2 synonyms, Boolean firstKey) at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary2 同义词、布尔 useOdbcRules)的服务 在 System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(字符串值) 在 Microsoft.EntityFrameworkCore.MySqlDbContextOptionsExtensions.UseMySql(DbContextOptionsBuilder optionsBuilder,字符串 connectionString,Action1 mySqlOptionsAction) at cihanturan.WebUI.Startup.<ConfigureServices>b__4_1(DbContextOptionsBuilder options) in C:\Users\Cihan\Documents\Visual Studio 2017\Projects\cihanturan\cihanturan.WebUI\Startup.cs:line 38 at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.DbContextOptionsFactory[TContext](IServiceProvider applicationServiceProvider, Action2 optionsAction) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite 构造函数CallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite 构造函数CallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite 构造函数CallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite,ServiceProviderEngineScope 范围) 在 Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider 提供程序,类型 serviceType) 在 Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(对象实例,IApplicationBuilder 构建器) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(对象实例,IApplicationBuilder 构建器) 在 Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder 应用程序) 在 Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() 暴击:Microsoft.AspNetCore.Hosting.Internal.WebHost[6] 应用启动异常…………

这是 Startup.cs

 public class Startup
{
    public Startup(IConfiguration configuration)    
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }   

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DbCihanConnection")));
        services.AddDbContext<ApplicationIdentityDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DbCihanConnection")));

        services.AddIdentity<ApplicationUser, IdentityRole>(options =>   
        {  
            options.User.RequireUniqueEmail =true;                               

            options.Password.RequiredLength = 7;
            options.Password.RequireLowercase = false;
            options.Password.RequireUppercase = false;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireDigit = false;

        })
                .AddEntityFrameworkStores<ApplicationIdentityDbContext>()
                .AddDefaultTokenProviders();
        services.ConfigureApplicationCookie(options =>
        {
            options.AccessDeniedPath = "/Admin/Account/AccessDenied";
            options.Cookie.Name = "CookieCihan";
            options.LoginPath = "/Admin/Account/Login";                      

        });

        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, UserManager<ApplicationUser> userManager,RoleManager<IdentityRole> roleManager)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
        });
        app.UseStatusCodePagesWithReExecute("/Errors/Index", "?statusCode={0}");   
        app.UseStaticFiles();               
        app.UseAuthentication();   
        app.UseHttpsRedirection();

        app.UseMvc(routes =>
        {
            routes.MapRoute(name: "areas",
                template: "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
        });

        app.UseMvc(routes =>        
        {
            routes.MapRoute(name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        MyIdentityDataInitializer.SeedData(userManager, roleManager,app);

    }
}

这是 Program.cs

 public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }


        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)            
                .UseStartup<Startup>()
                .UseDefaultServiceProvider(options=>options.ValidateScopes=false);
    }

【问题讨论】:

  • 你的 asp.net 核心版本是什么?对于services.AddIdentity,它将注册所需的服务。你在 Centos 上安装了哪个运行时?
  • 再注意一下,你的连接字符串是什么。尝试检查连接字符串是否有效且可访问。

标签: asp.net-core asp.net-core-mvc asp.net-core-2.0 centos7 sigabrt


【解决方案1】:

您正在尝试将 UserManager 注入尚未注册到服务中的配置方法。

因此,您的应用程序无法解析 UserManager

【讨论】:

    猜你喜欢
    • 2018-12-23
    • 1970-01-01
    • 2017-03-06
    • 2018-07-30
    • 1970-01-01
    • 2019-04-28
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多