我有一个示例。net Core 2.1应用程序,它使用IIS Express和LocalDB,但每当我运行WebAPI应用程序时,我得到以下错误:
System.Data.SqlClient。在建立到SQL Server的连接时发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名是否正确,SQL Server是否配置为允许远程连接。出现本地数据库运行时错误(provider: SQL Network Interfaces, error: 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权限有关?
必须添加一个池只要AppPool名称实际存在,现在就应该创建登录。
我是如何让它工作的:
- 在SQL Server Management Studio中,查找安全文件夹(与数据库,服务器对象等文件夹处于同一级别的安全文件夹)…而不是每个单独数据库中的security文件夹)
- 右键单击登录,选择"新建登录">
- 在登录名字段中,输入IIS APPPOOLYourAppPoolName -不要点击搜索
- 填写您喜欢的任何其他值(即,身份验证类型,默认数据库等)
- 单击OK
或
CREATE LOGIN [IIS APPPOOLMyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOLMyAppPool];