我们有一个经典的ASP应用程序。我正在尝试使用相同的IIS7实例在同一台服务器上克隆它,因此我们有一个开发版本。我复制了文件,并复制了我在IIS管理器中可以找到的所有配置。
问题是数据库访问。新副本使用与旧版本相同的应用程序池和相同的连接字符串,但是当我创建ADODB.Connection
并使用相同的旧连接字符串调用conn.Open(str)
时,该调用将抛出"Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'."
。
这不是应用程序池正在使用的用户帐户,但这似乎无关紧要。
"Provider=SQLOLEDB;Data Source=OURSVR;Initial Catalog=OURDB;Integrated Security=SSPI;"
那么:你如何强制经典ASP模拟NT AUTHORITY\ANONYMOUS LOGON
以外的用户帐户?
答案 0 :(得分:9)
匿名用户身份非常重要。所以你必须做到这一点。在这种情况下,应用程序池具有我希望应用程序使用的标识,但此应用程序实际上并未使用它。
在IIS7的IIS管理器中,左键单击树中的应用程序,然后单击中间窗格底部的“功能视图”选项卡。
在“IIS”下(我在该窗格的“分组依据:”下拉列表中选择了“区域”),找到“身份验证”(或“真实...”,如果列表视图没有'有焦点)。
双击它。应该启用“匿名身份验证”(它是)。
右键单击“匿名身份验证”,然后从上下文菜单中选择“编辑...”。
将“匿名用户身份:”从“特定用户:”(“IUSR”)更改为“应用程序池标识”,然后单击“确定”。
重新启动Web服务器。