0

ASP.NET WebプロジェクトでSMOを使用して、サーバーのデータベースのリストを取得しようとしています。私が使用している方法は、Windows 7マシンでは正常に機能しているようですが、XPマシンに2番目にインストールすると、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 を呼び出します。問題は、IIS が SQL にアクセスするときにどのログインを使用するかです。W7 では偽装され、XP では実行されないのでしょうか?

確かに、XP はあなたを偽装せず、エラー メッセージに示されているように 'ComputerName\ASPNET' を使用します。IIS6 の ASPNET 偽装設定についてはこちらに、IIS7についてはこちらに記載されています。デフォルトでは、両方の IIS で偽装がオフになっていますが、W7 での現在の構成がわかりません。たぶん、IIS6でオンにする必要がありますか?

于 2012-08-21T20:22:34.343 に答える