0

我在 Windows 服务应用程序中定义连接字符串时遇到问题。SQL server 和 windows 服务在不同的域上,这就是问题所在。但是,我知道这是可能的,因为在带有此参数的终端中使用 runas.exe 时没有问题。

%windir%\system32\runas.exe /noprofile /netonly /user:DOMAIN1\%USERNAME% "ssms -nosplash -S SQLServerName -E"

所以问题应该出在我的连接字符串中。如何修改我的连接字符串以以相同的方式访问服务器?我的连接字符串现在看起来很精简:

<connectionStrings>
<add name="MyEntities" connectionString="metadata=res://*/DataAccess.MyDatabase.csdl|res://*/DataAccess.MyDatabase.ssdl|res://*/DataAccess.MyDatabase.msl;
     provider=System.Data.SqlClient;provider connection string=&quot;data source=SQLServerName;
     initial catalog=MyDatabase;Trusted_Connection=yes;User Id=DOMAIN1\USERNAME;Password=*****;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

更新

似乎不可能完全复制 runas.exe 命令。我尝试像podiluska解释的那样使用模仿。但是,这仅在用户可以在当前域上运行时才有效。在我的情况下,我想在连接到数据库时将 Windows 凭据作为参数发送,因为该用户无法在当前域中登录。任何人都可以确认这是不可能的吗?

4

1 回答 1

0

您需要使用模拟 - 在 IIS 应用程序池中,或通过向 web.config 添加一行

 <identity impersonate="true" userName="DOMAIN1\UserName" password="****" /> 

(并从连接字符串中删除用户 ID/密码条目

于 2012-07-04T07:56:10.960 回答