【问题标题】:Publish .Net Core app with Entity Framework to IIS将带有实体框架的 .Net Core 应用程序发布到 IIS
【发布时间】:2019-10-23 10:38:50
【问题描述】:

我正在尝试将我的 .Net Core 应用程序发布到使用 Entity Framework 的 IIS。我可以很好地发布它,但发布向导中不包含任何数据库。

我遵循了不同的教程,包括: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0

但是没有人告诉你如何部署你的数据库或者如果使用实体框架需要做什么。我对发布和托管网络应用程序比较陌生,所以我不确定该怎么做。

目前,我的 Web 应用程序前端加载到 IIS 上,但是当我登录时,它会出现 500 错误。我已包含我的连接字符串并添加了一个用户并在 SSMS 下授予了正确的权限。

发布时我注意到它显示“在他的项目中找不到数据库”。

这是否会影响我无法访问数据库并在登录时出现 500 错误以及如何解决此问题。

No databases found in the project

【问题讨论】:

  • 如果您使用 SQL,那么您需要有一个 SQL Server 实例设置。
  • @TonyAbrams 我正在使用 SQLExpress

标签: sql entity-framework asp.net-core iis sql-server-express


【解决方案1】:

您最初是如何在本地创建数据库的?您是否手动运行了database update 命令?我建议您在 startup.cs 文件中添加代码以确保创建数据库并应用任何缺少的迁移,您可以在 Configure 方法中实现此目的:

 using (var scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
 {
     scope.ServiceProvider.GetRequiredService<DbContext>().Database.Migrate();
 }

如果您不对未来的负载应用丢失的迁移,则只需 EnsureCreated() 而不是 Migrate()

【讨论】:

  • 嗨 Tiago,是的,我刚刚手动运行了更新数据库。我的 ConfigureServices services.AddDbContext(opt => opt.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); 中有以下内容
  • @LouiseHelena 我没有说ConfigureServices方法,而是Configure,在那里你可以添加以下sn-p来确保你的数据库是在启动时创建的。
【解决方案2】:

看来您需要将 appsettings.json 中的 ConnectionString 配置从格式更改为

"Data": {
    "DefaultConnection": {
       "ConnectionString": "xxxxxx"
    }
}

到:

"ConnectionStrings": {
    "DefaultConnection": "xxxxxx"
}

和你的创业公司

services.AddDbContext<ApplicationDbContext>(opt => opt.UseSqlServer(Configuration["ConnectionStrings:DefaultConnection"]));

【讨论】:

    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2019-06-15
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多