我们有一个经典的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;"
因此:如何迫使Classic ASP模仿除
NT AUTHORITY\ANONYMOUS LOGON
之外的用户帐户? 最佳答案
重要的是匿名用户身份。因此,您必须做出正确的选择。在这种情况下,应用程序池具有我要应用程序使用的身份,但是此应用程序实际上并未使用它。
在用于IIS7的IIS管理器中,左键单击树中的应用程序,然后单击中间窗格底部的“功能视图”选项卡。
在“IIS”下(我在该窗格的顶部的“分组依据:”下拉菜单中选择了“区域”),如果列表视图没有焦点,请找到“身份验证”(或“Authentic ...”) )。
双击它。应该启用“匿名身份验证”。
右键单击“匿名身份验证”,然后从上下文菜单中选择“编辑...”。
将“匿名用户身份:”从“特定用户:”(“IUSR”)更改为“应用程序池身份”,然后单击“确定”。
重新启动Web服务器。