我不是一个sql服务器人,但我正在研究客户端的应用程序,并希望首先通过EF代码连接到数据库
我拥有的异常消息是
底层提供商无法打开
例外详情
无法打开登录请求的数据库[DatabaseName]。登录失败
用户'IIS APPPOOL \ ASP.NET v4.0“
登录失败
我的网络配置
<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
不知道数据库配置或Web配置中的问题
答案 0 :(得分:1)
运行Web应用程序池(与Web应用程序关联)的用户无权访问您的数据库。您需要授予其权限或在具有权限的其他用户下运行。因此,总结一下:检查您的应用程序池正在运行的用户,然后检查该用户是否有权访问您的数据库。
答案 1 :(得分:0)
如果所有Web.config文件都正确,SQLSERVER具有相应的权限等,您还可以检查一件事。我曾经遇到过这个问题,当客户让我配置项目时,实体框架不会自动删除数据库(例如,如果模型已更改),但我仍然在localhost上测试项目。因此我需要创建一个新的数据库,但我忘了修复我的上下文文件。例如,我的问题是:
public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString)
{
Database.SetInitializer<MasterContext>(null);
}
应该是( 用于测试 ):
public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString)
{
Database.SetInitializer<MasterContext>(new DropCreateDatabaseIfModelChanges<MasterContext>());
}
否则,我会收到相同的错误,即底层提供程序在打开时失败,内部异常是用户登录失败。