IIS 无法连接到 LocalDB

问题描述 投票:0回答:2

我有一个使用 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 权限有关吗?

.net sql-server iis asp.net-web-api
2个回答
3
投票

您必须添加一个池 只要 AppPool 名称实际存在,现在就应该创建登录名。

我如何让它发挥作用的是:

  1. 在 SQL Server Management Studio 中,查找 Security 文件夹(与数据库、服务器对象等文件夹处于同一级别的安全文件夹...而不是每个单独数据库内的安全文件夹)
  2. 右键单击登录并选择“新登录”
  3. 在登录名字段中,输入 IIS APPPOOL\YourAppPoolName - 不要单击搜索
  4. 填写您喜欢的任何其他值(即身份验证类型、默认数据库等)
  5. 点击确定

或者

CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];

0
投票

对我来说,将 AppPool 用户更改为 LocalSystem 效果非常好。

来源:添加 IIS 7 AppPool 身份作为 SQL Server 登录

© www.soinside.com 2019 - 2024. All rights reserved.