8

我有一个经典的 ASP 应用程序,我试图连接到不同服务器上的 SQL Server 2008 数据库。ASP 应用程序由 Windows Server 2008 上的 IIS7 提供服务。

我已将网站的应用程序池更改为在特定的 Windows 帐户下运行,我已验证该帐户可以访问远程服务器上的数据库。

但是,当我在浏览器中运行该应用程序时,出现此错误:

应用程序错误
编号:-2147217843 (0x80040E4D)
来源:Microsoft OLE DB Provider for SQL Server
说明:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。

为什么尝试使用 NT AUTHORITY\ANONYMOUS LOGON 进行连接?应用程序池标识是否不适用于经典 ASP 代码?如何以特定用户身份进行此连接?

编辑

这是我正在使用的连接字符串:

提供者=SQLOLEDB.1;数据源=myDbServer;初始目录=myDatabase;集成安全=SSPI

4

3 回答 3

24

要使站点使用经典 ASP 的应用程序池标识,您需要更改用于匿名身份验证的凭据。默认情况下,该站点将设置为使用特定用户,即 IUSR。

从站点的 IIS 区域中选择Authentication ,然后选择Anonymous Authentication ,然后选择Edit。从特定用户更改为应用程序池标识

建议使用 Windows 身份验证(集成安全性)而不是 SQL 身份验证,这样您的配置文件中就没有凭据,这样如果这些文件遭到破坏,您就不会失去对凭据的控制。

于 2010-10-12T10:48:53.037 回答
0

您的应用程序是否模拟来电者?您需要启用约束委派:为委派配置服务器

于 2009-07-16T19:47:21.293 回答
-1

您应该为连接字符串www.connectionstrings.com指定用户名和密码,或者将 IIS 应用程序设置为以特定用户身份运行,但这会使 IIS 中的许多安全设置过时。

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;

看看这里:aspfaq

最后,确保在 IIS 站点上禁用匿名访问,以便它实际模拟您选择的用户,而不是传递匿名令牌。

于 2009-07-16T19:38:45.943 回答