我在Server 2003和SQL Server 2008中使用IIS 6,它位于一个单独的框中。现在我想使用网站的应用程序池标识连接到SQL服务器。 但不知怎的,每当我在page_load方法中显示身份时,它总是显示使用哪个网站浏览的Windows帐户。我已经在下面提供了详细信息
服务器:Windows Server 2003 数据库:SQL server 2008。 Web服务器和DB位于不同的计算机上。 WebSite:使用使用自定义域帐户运行的自定义应用程序池。网站已禁用匿名并启用了Windows身份验证。在web.config中未启用模拟。
我正在使用以下代码显示凭据:
Response.Write(HttpContext.Current.User.Identity.Name.ToString());
WindowsIdentity id = WindowsIdentity.GetCurrent();
Response.Write(id.Name);
现在我需要一种使用app pool身份连接数据库的方法。请让我知道如何做到这一点。如果我将网站匿名帐户设置为应用程序池标识一切正常但我不想这样做。现在,身份验证只是以匿名方式流向SQL服务器,并引发异常。
答案 0 :(得分:0)
我不确定IIS6,但是在IIS8中...在问题中的应用程序池的高级设置中,有一个标识部分。将其设置为您要使用的Windows凭据。同时将“加载应用程序配置文件”设置为true。
然后在您的应用程序中,您只需要设置连接字符串以使用trusted_connection而不是SQL服务器用户名和密码。
请记住将Windows帐户设置为永不过期的密码,除非您记得在更改时更新应用程序池(或池将停止。)
戴夫
答案 1 :(得分:0)
这听起来像你启用了Windows身份验证并使用IE连接到该站点?在这种情况下,Windows标识将传递到IIS。