0

我正在尝试在 ASP.NET Web 项目中使用 SMO 来获取服务器数据库的列表。我使用的方法似乎在 Windows 7 机器上运行良好,但第二次将它安装在 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 中。

有人有任何建议/类似圣人的建议要分享吗?

4

1 回答 1

1

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

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

于 2012-08-21T20:22:34.343 回答