0

既存のASP.Netコア2.0アプリケーションに統合された後、ASP.Net Core 2.0に基づいて新しく作成された認証プロジェクト項目もあります。私は次のエラーを得たbrowsserにいくつかの調整後、ビルドが成功した後アクティブ化しようとしたときに 'MyApp.ApplicationDbContext'タイプのサービスを解決できません

、:認証は

マイStartup.csのようにある、まだ足場ではない別のデータベースを使用する必要があります

An unhandled exception occurred while processing the request.

InvalidOperationException: Unable to resolve service for type 'SpaServices.ApplicationDbContext' while attempting to activate

次の:

public Startup(IHostingEnvironment env) 
{ 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
     .AddEnvironmentVariables(); 
    Configuration = builder.Build(); 
} 

public IConfigurationRoot Configuration { get; } 

// This method gets called by the runtime. Use this method to add services to the container. 
public void ConfigureServices(IServiceCollection services) 
{ 
    // Add framework services. 
    services.AddDbContext<SchoolContext>(options => 
     options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 

    services.AddIdentity<ApplicationUser, IdentityRole>() 
     .AddEntityFrameworkStores<ApplicationDbContext>() 
     .AddDefaultTokenProviders(); 

    services.AddMvc() 
     .AddRazorPagesOptions(options => 
     { 
      options.Conventions.AuthorizeFolder("/Account/Manage"); 
      options.Conventions.AuthorizePage("/Account/Logout"); 
     }); 

    // Register no-op EmailSender used by account confirmation and password reset during development 
    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=532713 
    services.AddSingleton<IEmailSender, EmailSender>(); 

} 

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 

    #region webpack-middleware-registration 
    if (env.IsDevelopment()) 
    { 
     app.UseDeveloperExceptionPage(); 
     app.UseWebpackDevMiddleware(); 
    } 
    else 
    { 
     app.UseExceptionHandler("/Home/Error"); 
    } 

    // Call UseWebpackDevMiddleware before UseStaticFiles 
    app.UseStaticFiles(); 
    #endregion 

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

     routes.MapSpaFallbackRoute(
      name: "spa-fallback", 
      defaults: new { controller = "Home", action = "Index" }); 
    }); 
    #endregion 
} 

そして、私のコンストラクタは以下の通りです:

成功せず

public ApplicationDbContext(DbContextOptions options) 
    : base(options) 
    { 
    } 

、どんな考えを:

は、私がどのように解決するために、明示的にコンテナが知っているタイプを期待するコンストラクタを更新しましたか?

答えて

1

あなたのConfigureServicesで、次の()メソッド含める必要があります。現時点では、あなただけの「SchoolContext」DbContext

+0

を追加した時には1は愚かなミスをすることが起こると、これは

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("[Your Connection String Identifier]"))); 

をはい、あなたは正しいです、私はそれを追加し、コンテナが解決する方法を知っている型を明示的に期待するために上記のようにコンストラクタを再更新して、それがうまくいきました。 –

関連する問題