0

这是一个使用“Forms”作为身份验证模式的 asp.net 应用程序,在连接字符串中指定单个 SQL 用户(“Server=SQLSERVER;Database=DB;User Id=user;Password=pwd;Persist Security Info=True ;") 并且显然拒绝访问 FILESTREAM,服务 IIS 和 SQL 都驻留在不同的机器上。一切都在我的开发环境中运行,但这里的连接字符串通过受信任的连接传递给当前 Windows 用户。

我创建了一个服务帐户并在 IIS 中配置了应用程序池以使用其凭据运行,我们将相同的用户添加到 SQL 服务器并为我们需要的数据库分配了权限,最初我收到“无法创建 SSPI 上下文”作为错误,然后我从使用“受信任的连接=真”(服务器=SQLSERVER;数据库=数据库;持久安全信息=真;受信任的_连接=真;)的FILESTREAM管理模块设置要使用的服务器连接,现在我得到了拒绝访问,但现在“用户 'DOMAIN\SERVERNAME' 登录失败。”,其中 servername 是托管 IIS 的服务器。

任何帮助将不胜感激!!!

4

1 回答 1

0

当 ASP.NET 应用程序通过“集成安全性”(受信任的连接)向 SQL 服务器寻求授权时,它会尝试通过其所在计算机的机器名称进行授权。(从技术上讲,它会尝试使用应用程序池的身份进行授权,为此“applicationPoolIdentity”是内置计算机帐户)这些计算机帐户的格式为 DOMAIN\COMPUTER$

将登录名 DOMAIN\IISSERVERNAME$(需要 $ 符号)添加到 SSMS 中的授权用户,并将读/写权限分配给相应的数据库。

于 2015-01-19T03:30:31.880 回答