【发布时间】:2016-01-20 20:58:47
【问题描述】:
我收到以下错误,我终生无法解决。我正在使用带有 Identity 2 的 EF 6,几天前它运行良好。
我昨天启动了 VS 2015,并在发布到测试站点和本地时都开始收到错误。即使 Web.config 配置为使用 SQL 2014 标准服务器,EF 也几乎是在寻找 SQL Express 的本地实例。
这是错误:
“/”应用程序中的服务器错误。 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例) 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
SQLExpress 数据库文件自动创建错误:
连接字符串使用应用程序 App_Data 目录中的数据库位置指定本地 Sql Server Express 实例。提供者试图自动创建应用程序服务数据库,因为提供者确定该数据库不存在。要成功检查应用服务数据库是否存在并自动创建应用服务数据库,必须满足以下配置要求:
如果应用程序在 Windows 7 或 Windows Server 2008R2 上运行,则需要特殊的配置步骤来启用提供程序数据库的自动创建。更多信息请访问:http://go.microsoft.com/fwlink/?LinkId=160102。如果应用程序的 App_Data 目录尚不存在,则 Web 服务器帐户必须具有对应用程序目录的读写权限。这是必要的,因为如果 App_Data 目录不存在,Web 服务器帐户将自动创建它。 如果应用程序的 App_Data 目录已存在,则 Web 服务器帐户只需要对应用程序的 App_Data 目录进行读写访问。这是必要的,因为 Web 服务器帐户将尝试验证 Sql Server Express 数据库是否已存在于应用程序的 App_Data 目录中。从 Web 服务器帐户撤消对 App_Data 目录的读取访问权限将阻止提供程序正确确定 Sql Server Express 数据库是否已经存在。当提供程序尝试创建现有数据库的副本时,这将导致错误。需要写入权限,因为在创建新数据库时会使用 Web 服务器帐户的凭据。 机器上必须安装 Sql Server Express。 Web 服务器帐户的进程标识必须具有本地用户配置文件。有关如何为计算机和域帐户创建本地用户配置文件的详细信息,请参阅自述文件。
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
[SqlException (0x80131904):在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection,Action`1 wrapCloseInAction)+92 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +285
这是 Web.config 中的连接字符串和 EF 配置:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=SQL5017.Smarterasp.net;Initial Catalog=DB_9CF975_moverlive;User Id=xxxxxxxxx;Password=xxxxxxx;" providerName="System.Data.SqlClient" />
</connectionStrings>
我可以使用带有上述连接字符串的 SQL Server Management Studio 很好地连接到数据库。
我应该寻找什么?
【问题讨论】:
-
你自己做过研究吗?您尝试如何(使用哪个代码)建立连接?
-
在第一次访问 DbContext 之前设置断点。看db.Database.Connection.ConnectionString
标签: c# sql asp.net sql-server entity-framework