0

我有一个连接到两个不同 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>
4

1 回答 1

0

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

类似的问题:StackOverflow:来自 C# 的 Windows 模拟

我的最终代码基于以下项目:代码项目:用于模拟用户的小型 C# 类

现在一切似乎都运行良好。

于 2012-11-30T18:37:10.463 回答