0

2 つの異なる SQL データベースに接続するコンソール アプリケーションがあります。構成ファイル内で「偽装」タグを使用して、アプリケーションが「APP_USER」としてログインするように強制しています。APP_USER アカウントは Windows 認証を利用し、両方のデータベースで権限が付与されています。

最初の DB 接続は正常に動作しますが、2 番目の接続はアクセス権のないアカウントとしてログインしようとして失敗します。

System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\CURRENT_USER'.

アプリケーションが別のユーザーとして両方のデータベースにログインできるようにするには、構成で何を変更する必要がありますか?

<configuration>
  <connectionStrings>
    <add name="Connection1" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DB1;initial catalog=DBcat1;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="Connection2" connectionString="metadata=res://*/Models.Model2.csdl|res://*/Models.Model2.ssdl|res://*/Models.Model2.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DB2;initial catalog=DBcat2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <system.web>
    <identity impersonate="true" userName="DOMAIN\APP_USER" password="password"/>
  </system.web>
</configuration>
4

1 に答える 1

0

どうやら、構成設定ルートはasp.netプロジェクトでのみ使用できます。コンソール アプリケーション内でこれを行うには、advapi32.dll ライブラリ内で LogonUser を利用するコードを記述する必要があります。

類似の質問: StackOverflow: C# からの Windows 偽装

最終的なコードは、次のプロジェクトに基づいています。コード プロジェクト: ユーザーを偽装するための小さな C# クラス

今はすべてうまくいっているようです。

于 2012-11-30T18:37:10.463 に答える