在开发阶段,我使用 EF Code First 最初创建了我的数据库。当我将项目移动到服务器上的暂存环境时,我包含了一个小技巧,以避免在特定阶段更改或删除数据库。(因此它将连接到现有数据库)。我现在制作了该项目的一个简单副本,并尝试将其托管在服务器上的另一个位置,以便同时运行暂存版本和实时版本,但使用两个不同的数据库,我认为这两个数据库可以在 web.config 中设置。当我从一个位置运行它时它可以工作但在另一个位置我的应用程序池失败
A process serving application pool 'XYZ' suffered a fatal communication error with the Windows Process Activation Service. The process id was '1234'. The data field contains the error number.
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7a5f8
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec49b8f
Exception code: 0xc00000fd
Fault offset: 0x0002e04e
Faulting process id: 0x1d98
Faulting application start time: 0x01ce1b29dcf57530
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SysWOW64\ntdll.dll
Report Id: 1fd4a0b0-871d-11e2-a272-be31a5415ec8
有什么想法或建议吗?
有关代码的详细信息:
Global.asax - Application_Start
if (DAL.General.Helpers.Phase == "Live") {
Database.SetInitializer<MyContext>(new MyContextProductionInitialiser());
} else {
Database.SetInitializer(new MyContextInitialiser());
}
MyContextProductionInitialer
public class MyContextProductionInitialiser : IDatabaseInitializer<MyContext>
{
public void InitializeDatabase(MyContext context)
{
if (!context.Database.Exists())
{
throw new System.Configuration.ConfigurationErrorsException("Database does not exist");
}
}
}
MyContextInitialer
public class MyContextInitialiser : DropCreateDatabaseIfModelChanges<MyContext> {...}
我的上下文
public MyContext() : base("name=MyContextConnectionString") {
Database.Initialize(false);
}
** Web.config **
<connectionStrings>
<add name="MyContextConnectionString" connectionString="Server=.;Database=database_staging;User Id=sa;Password=password;" providerName="System.Data.SqlClient " />
</connectionStrings>
数据库:我正在为暂存和实时数据库使用共享 SQL 登录用户。
应用程序池:在 IIS 7.5 中运行着两个独立但相同的应用程序池。它们都是 v4.0 集成的。
编辑 如果我将数据库名称更新为与原始数据库名称完全相同,那么它可以工作。我能做些什么来解决这个问题?