2012-06-05 72 views
1

我不是一个SQL Server的家伙,但我工作的一个客户端的应用程序和要连接到通过EF代码数据库首先基础提供未能打开,用户登录失败IIS APPPOOL

异常消息我已经是

底层提供未能打开

异常的详细信息

无法打开登录请求的数据库[DatabaseName]。登录失败

用户登录失败“IIS APPPOOL \ ASP.NET v4.0" 的

我的web配置

<add name="TraininGoDB" 
    providerName="System.Data.SqlClient" 
    connectionString="Server=LOCALPCNAME\SQLEXPRESS;Database=[DATABASENAME];Integrated Security=True;"/> 

的EF上下文和实体的定义单独的项目与下面的应用配置

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
</configuration> 

我使用的SQL Server Express 2008

不知道从数据库CONFIGRATION或web配置

回答

1

下使Web应用程序池(关联到你的Web应用程序)的用户的问题是没有按运行没有权限访问您的数据库。您需要为其授予权限或在具有权限的其他用户下运行。因此,总结一下:检查应用程序池在哪个用户下运行,然后检查该用户是否有权访问您的数据库。

0

如果您的所有Web.config文件都正确,SQLSERVER具有适当的权限等等,还有一件事您可以检查。我曾经遇到过这个问题,当客户端配置项目时,Entity Framework不会自动删除数据库(例如,如果模型已更改),但我仍在本地主机上测试项目。因此我需要创建一个新的数据库,但我忘了修复我的上下文文件。例如,我的问题是:

public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString) 
    { 
     Database.SetInitializer<MasterContext>(null); 
    } 

时,它应该是(用于测试目的):

public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString) 
    { 
     Database.SetInitializer<MasterContext>(new DropCreateDatabaseIfModelChanges<MasterContext>()); 

    } 

否则,我会收到同样的错误,底层提供程序在打开时失败,内部例外是用户登录失败。

相关问题