当项目部署在 IIS 8.5 上时,无法使用 EntityFramework6 创建数据库
Cannot create DB using EntityFramework 6 when the project is deployed on an IIS 8.5
我有一个 Visual Studio 2019 项目,该项目使用 ASP.NET 和 C# 发布网络应用程序 (web api)。
我们使用 EntityFramework 6 代码优先策略来访问 SQL 服务器数据库。
当我 运行 在本地或在 Azure 服务上时,一切都很好,但是当我将此 Web 应用程序部署到服务器 运行ning Windows 服务器中的 IIS 8.5 时2012 R2,出于某种原因EntityFramework 6 无法创建数据库。
我们使用以下方法创建数据库:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MobileServiceContext, Migrations.Configuration>("MS_TableConnectionString"));
我们指向本地 SQL Server 2014。
我们创建一个 DbContext 的子对象来处理 EntityFramework 上下文,如下所示:
public class MobileServiceContext : DbContext
{
public const string CONNECTION_STRING_KEY = "MS_TableConnectionString"; // "MS_TableConnectionString";
public const string CONNECTION_STRING_NAME = "Name=" + CONNECTION_STRING_KEY; // "MS_TableConnectionString";
public MobileServiceContext() : base(CONNECTION_STRING_NAME)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
... we add some logic here to create indexes etc.
}
}
当我尝试在服务器上远程调试应用程序时,在第一次创建类型为 MobileServiceContext 的对象时,执行并没有继续(我什至尝试添加一个 try-catch在创建时,但它不会进入异常捕获...)。
显然我们从未进入 OnModelCreating 方法...
同样,同样的代码在本地和 Azure 上都能完美运行。
我应该在我的服务器上配置什么吗?
只是为了记录,结果我不得不在 web.config 中添加以下重定向:
<dependentAssembly>
<!-- Don't change this redirect!! It is part of a problem with a MS bug, see here https://github.com/dotnet/corefx/issues/25773 -->
<assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
我有一个 Visual Studio 2019 项目,该项目使用 ASP.NET 和 C# 发布网络应用程序 (web api)。
我们使用 EntityFramework 6 代码优先策略来访问 SQL 服务器数据库。
当我 运行 在本地或在 Azure 服务上时,一切都很好,但是当我将此 Web 应用程序部署到服务器 运行ning Windows 服务器中的 IIS 8.5 时2012 R2,出于某种原因EntityFramework 6 无法创建数据库。
我们使用以下方法创建数据库:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MobileServiceContext, Migrations.Configuration>("MS_TableConnectionString"));
我们指向本地 SQL Server 2014。
我们创建一个 DbContext 的子对象来处理 EntityFramework 上下文,如下所示:
public class MobileServiceContext : DbContext
{
public const string CONNECTION_STRING_KEY = "MS_TableConnectionString"; // "MS_TableConnectionString";
public const string CONNECTION_STRING_NAME = "Name=" + CONNECTION_STRING_KEY; // "MS_TableConnectionString";
public MobileServiceContext() : base(CONNECTION_STRING_NAME)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
... we add some logic here to create indexes etc.
}
}
当我尝试在服务器上远程调试应用程序时,在第一次创建类型为 MobileServiceContext 的对象时,执行并没有继续(我什至尝试添加一个 try-catch在创建时,但它不会进入异常捕获...)。
显然我们从未进入 OnModelCreating 方法...
同样,同样的代码在本地和 Azure 上都能完美运行。
我应该在我的服务器上配置什么吗?
只是为了记录,结果我不得不在 web.config 中添加以下重定向:
<dependentAssembly>
<!-- Don't change this redirect!! It is part of a problem with a MS bug, see here https://github.com/dotnet/corefx/issues/25773 -->
<assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>