Asp.net 将SMO与Windows身份验证一起使用时在XP中引发ConnectionFailureException

Asp.net 将SMO与Windows身份验证一起使用时在XP中引发ConnectionFailureException,asp.net,sql-server,windows-xp,windows-authentication,smo,Asp.net,Sql Server,Windows Xp,Windows Authentication,Smo,我试图在ASP.NET web项目中使用SMO来获取服务器数据库的列表。我使用的方法似乎在Windows7机器上运行良好,但当我在XP机器上安装它时,我得到一个ConnectionFailureException。我用来建立连接的代码是: ServerConnection connection = new ServerConnection(serverName); Server serverConnection = new Server(connection);

我试图在ASP.NET web项目中使用SMO来获取服务器数据库的列表。我使用的方法似乎在Windows7机器上运行良好,但当我在XP机器上安装它时,我得到一个ConnectionFailureException。我用来建立连接的代码是:

        ServerConnection connection = new ServerConnection(serverName);
        Server serverConnection = new Server(connection);
        string[] databases;
        try
        {
            databases = new string[serverConnection.Databases.Count];
        }
        catch { databases = new string[0]; }
在Windows 7计算机上,无论有多少数据库,我都会得到一个长度为的空数组,然后在foreach循环中将数据库名称添加到其中,但在Windows XP中,它在try块中失败,我得到:

ConnectionFailureException: Failed to connect to server localhost. 
-> Login failed for user 'ComputerName\\ASPNET'.
我猜这是ASPNET用户的某种权限问题,但我似乎找不到任何解决问题的方法。在IIS中,我取消选择了匿名访问,选择了集成Windows身份验证,并设置

<authentication mode="Windows" /> 

在web.config中


有人有任何建议/类似sage的建议可供分享吗?

是否希望web应用程序模拟用户以连接到SQL? 使用SQL Management Studio时,您直接连接到SQL;当您从web应用程序执行此操作时,您正在调用它,IIS将调用您的SQL。现在的问题是IIS在访问SQL时使用哪个登录名-它是否在W7下模拟您,而不是在XP下模拟您


请确保XP不会模拟您并使用错误消息中显示的“ComputerName\ASPNET”。描述了IIS6 ASPNET模拟设置和IIS7。默认情况下,两个IISes中的模拟都已关闭,但我不确定W7上的当前配置是什么。也许你应该在IIS6下打开它?

你在XP上安装了最新的客户端工具吗?是的,我有最新的SQL Server客户端工具。所以你在W7和XP上都安装了IIS。W7使用哪个用户连接到SQL?您不能模拟XP的IIS以使用相同的IIS吗?W7计算机正在使用“IIS APPPOOL\\ASP.NET v4.0”作为用户,而XP正在使用“ComputerName\\ASPNET”用户。我认为XP上的IIS不支持应用程序池,因此我不认为我可以只使用同一个用户。如果我手动将ComputerName\\ASPNET用户添加到SQL Server Management studio,它可以工作,但这并不是一个理想的解决方案。