You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署带Identity的ASP.NET MVC 5站点时出现异常数据库行为

解决方案

1. 禁用Entity Framework自动数据库初始化

ASP.NET MVC 5默认的EF初始化逻辑会尝试自动创建数据库,哪怕你已经手动导入了架构。修改方式二选一:

  • 在你的ApplicationDbContext(身份验证默认的DbContext类)构造函数里添加:
public ApplicationDbContext() : base("你的连接字符串名称")
{
    Database.SetInitializer<ApplicationDbContext>(null);
}
  • 或者在Global.asax.cs的Application_Start方法中添加:
Database.SetInitializer<ApplicationDbContext>(null);

这样就能彻底关掉EF自动创建/初始化数据库的行为。

2. 核对Web.config连接字符串

确保连接字符串精准指向你已经导入的数据库,别用默认的LocalDB或者需要新建的库:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Server=主机SQL实例地址;Database=你已导入的数据库名;User ID=数据库账号;Password=数据库密码;" providerName="System.Data.SqlClient" />
</connectionStrings>

重点检查:

  • Database字段必须是你手动导入的数据库名称
  • 账号密码要拥有该数据库的读写权限(不需要建库权限)
  • 服务器地址要和共享主机提供的SQL实例地址一致

3. 检查身份验证初始化代码

如果用了ASP.NET Identity,排查IdentityConfig.cs里的ApplicationUserManager初始化逻辑,确保没有触发数据库创建的代码。

4. 同步迁移历史表

如果之前开了Code First迁移,把本地的__MigrationHistory表数据导出导入到远程数据库,让EF认为迁移已完成,不会再执行包含建库的迁移操作。

5. 确认数据库权限

给你的数据库账号分配db_owner权限,或者至少ddl_admin+db_datawriter+db_datareader权限,保证能在现有库内操作表和数据。


错误堆栈参考:
System.Data.SqlClient.SqlException (0x80131904): CREATE DATABASE permission denied in database 'master'. at System.Data.SqlClient.SqlConnection.OnError

内容的提问来源于stack exchange,提问作者JaggenSWE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 02:54:25