【发布时间】:2021-09-05 19:41:23
【问题描述】:
我有一个使用 IIS Express 和 LocalDB 的示例 .NET Core 2.1 应用程序,但每当我运行 WebAPI 应用程序时,我都会收到以下错误:
System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法获取本地应用程序数据路径。很可能未加载用户配置文件。如果在 IIS 下执行 LocalDB,请确保为当前用户。
我的连接字符串是:
"ConnectionStrings": {
"DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB,1433;AttachDbFilename=C:\\temp\\gitprojects\\TokenAuthAPI\\TokenAuthAPI\\TokenAuth.mdf;Integrated Security=True"
}
我最初没有.mdf路径或1433,但我在网上检查后添加了这些,但仍然是同样的错误。
在 SQL Server 对象资源管理器下的 Visual Studio 中,我创建了数据库并在运行时查看它 命令(在命令提示符中) SQLLocalDb info MSSQLLocalDB 我看到它正在运行。
如果我在 SQL Server 对象资源管理器中右键单击并检查数据库的属性并使用该连接字符串,我会得到同样的错误:
Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=TokenAuth;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
这与 IIS 权限有关吗?
【问题讨论】:
-
尝试使用服务器而不是数据源:
Server=MyPC\\SQLEXPRESS;Initial Catalog=TokenAuth;Integrated Security=True;另外尝试两个 `\` 而不是一个。最后,检查服务器名称是否正确。通常 IIS Express 的服务器名称为 '\\SQLEPXRESS ' -
问题基本上是 LocalDB 需要在人类 Windows 用户的上下文中运行,因为它将数据存储在他们的用户配置文件结构中。有一些解决方法,例如 LocalDB 的共享实例,但使用 SQL Server Express 或更高版本几乎总是更好。有关详细信息,请参阅this previous SO answer。
-
@JasonPan 是的,因为我可以使用相同的服务器和用户/密码通过 SSMS 进行连接。我在项目中有 EF 迁移并且运行良好,他们能够对数据库进行更改。
-
这里写的比较详细,推荐也是使用SQL Server Express,而不是LocalDB。 stackoverflow.com/questions/36703854/cannot-connect-to-localdb 我相信你可以让它工作,但它可能是使用 SQL Express 的更快途径
标签: .net sql-server iis asp.net-web-api