【问题标题】:Impersonate settings in config for multiple databases在配置中模拟多个数据库的设置
【发布时间】:2012-11-18 18:39:10
【问题描述】:

我有一个控制台应用程序,它连接到两个不同的 SQL 数据库。我在配置文件中使用“模拟”标签来强制应用程序以“APP_USER”身份登录。 APP_USER 帐户使用 windows 身份验证并已获得两个数据库的权限。

第一个数据库连接工作正常,但第二个数据库连接失败,因为它试图以我没有访问权限的帐户登录。

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>

【问题讨论】:

    标签: c#-4.0 app-config configuration-files identity impersonation


    【解决方案1】:

    显然 config-setting 路由只能在 asp.net 项目中使用。为了在控制台应用程序中完成此操作,您必须在 advapi32.dll 库中编写利用 LogonUser 的代码。

    类似问题:StackOverflow: Windows Impersonation from C#

    我的最终代码基于以下项目:Code Project: A small C# Class for impersonating a User

    现在似乎一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多