无法连接到LocalDB

我正在尝试运行IIS托管的应用程序(以电影数据库的forms)来教我自己如何设计3层架构程序:MVC应用程序,WCF服务,SQL Server数据库。 由于我没有完整SQL Server的许可证密钥,因此我决定使用LocalDB并使用WCF服务来包装我的存储过程。 这是我第一次使用LocalDB并遇到连接到我的实例v13.0的问题。

我的问题:

在我的生活中,我无法在VS中获取我的项目以连接到LocalDB实例。 我一直收到以下错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 – 发生本地数据库运行时错误。指定的LocalDB实例不存在。

我的连接字符串(来自Web.config):

   

使用sqlcmd连接到它并运行查询运行正常:

从命令行连接到LocalDB实例就好了

Visual Studio SQL Server对象资源管理器可以很好地连接:

Visual SQL Server对象资源管理器可以很好地连接

连接字符串,当它到达有问题的行时由Visual Studio转义,所以我知道连接字符串没有错误地转义:

 "Data Source=(localdb)\\v13.0;Initial Catalog=MovieDB;Integrated Security=True;AttachDbFilename=|DataDirectory|\\MovieDB.mdf" 

我尝试按照本指南( 第1部分和第2部分 )进行操作,图像至少在2016年4月18日被破坏,所以我无法完全理解我应该做什么。 我只能得到上述错误,因为我将应用程序池标识更改为LocalSystem:

我只能得到此错误,因为我将应用程序池标识更改为LocalSystem

当应用程序池在ApplicationPoolIdentity标识下运行时,我收到此错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 – 发生本地数据库运行时错误。无法获取本地应用程序数据路径。很可能未加载用户配置文件。如果在IIS下执行LocalDB,请确保为此启用了配置文件加载当前用户。

我甚至修改了C:\ windows \ system32 \ inetsrv \ config \ applicationHost.config文件以强制配置文件加载。 依然没有。

                

我的应用程序在“.NET 4.5”应用程序池下运行

我的应用程序在“.NET 4.5”应用程序池下运行

我的代码:

页面加载并调用此服务以获取数据库中的电影列表:

 [ServiceContract] public interface IMovieDBService { // ... [OperationContract] List GetMovies(int actorID); // ... } public class MovieDBService : IMovieDBService { // ... public List GetMovies(int actorID = 0) { var output = new List(); using (var connection = DBTools.GetConnection(MovieDBConnectionName)) // Does not get past here; MovieDBConnection = "MovieDB" { var parameters = new List { new SqlParameter("@actorID", actorID) }; using (var reader = connection.ExecuteStoredProcedure("GetMovies", parameters)) { while (reader.Read()) { output.Add(new Movie { ID = reader.GetInt32("ID"), Title = reader.GetString("Title"), Year = reader.GetInt16("Year"), Genre = GetGenre(reader.GetInt32("GenreID")) }); } } } return output; } // ... } 

我的DBTools项目中存在问题的方法:

 public static SqlConnection GetConnection(string connectionName) { var connection = new SqlConnection(); var connectionString = ConfigurationManager.ConnectionStrings[connectionName]; if (connectionString != null) { connection.ConnectionString = connectionString.ConnectionString; connection.Open(); // breaks here return connection; } return null; } 

我只能假设问题与身份validation有关,或者IIS托管的应用程序正在尝试连接到LocalDB用户进程这一事实,但我已尝试按照其他问题的说明进行操作但未成功(可能是因为失败)了解真正的问题)。 我很茫然…

试试这个:在你的applicationhost文件中尝试将processModel identityType更改为SpecificUser,还包括用户名和密码。 或者将您的应用程序池标识更改为具有数据库权限的用户。 当您作为应用程序池标识运行时,根据您的屏幕截图,您将作为本地系统运行 – 这是一个预定义的本地帐户,而sqlcmd作为您登录的用户运行。