3

我正在 IIS7 上使用 MVC4 制作模型优先网站。

目前我的连接字符串如下所示:

<add name="VaultEntities"  
    connectionString="metadata=res://*/Models.VaultDB.csdl|res://*/Models.VaultDB.ssdl|res://*/Models.VaultDB.msl;provider=System.Data.SqlClient;
         provider connection string=&quot;
         data source=sqlserver\instance;
         initial catalog=vault;
         integrated security=True;
         multipleactiveresultsets=True;
         App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />

当我通过 Model First 方法添加数据库时,Visual Studio 2011 会自动生成连接。该查询在我的开发机器上本地完美运行。但它在 IIS 服务器上不起作用。

我的猜测是,这是因为我的开发机器上的用户帐户可以访问 SQL 服务器,而当 IIS 尝试访问 SQL 服务器时,它的用户帐户被拒绝。

在一个完美的世界中,我会在 SQL 服务器上添加一个用户并使用

User Id=myUsername;Password=myPassword;

在我的连接字符串中,不幸的是我没有那个选项。

无需详细说明,dba 的...很难...使用。

那么有什么方法可以在连接字符串中使用我的 AD 帐户登录到 SQL 服务器......或者我可以让 IIS 将自己标识为我吗?

4

2 回答 2

6

有什么方法可以在连接字符串中使用我的 AD 帐户登录到 SQL 服务器...或者我可以让 IIS 将自己标识为我吗?

您可以让应用程序池使用您想要的任何 AD 用户。

我不建议使用您自己的用户名。在过去 12 个月中,您锁定了多少次用户名,离开后会发生什么?

创建/使用服务 AD 帐户,将其映射到应用程序池中,并让 DBA 使用受信任的连接向该用户授予 DB 访问权限。抱歉,您必须与 DBA 交谈!:-)

于 2012-11-12T14:03:46.330 回答
3

好的,有两个选择。1. 您可以将您的应用程序池身份更改为对数据库具有 AD 访问权限的身份,这也可以通过使用impersonation您网站的 web.config 文件中的部分来完成(检查此链接)。2. 要么将 sql 帐户添加到连接字符串。正如我所看到的,您使用的是 EF 连接字符串,它与标准 sql 连接字符串有点不同。但仍然有与 sql 凭据相同的部分,只需替换integrated security = trueused id =...;password=.... 就这样。

希望这可以帮助。

于 2012-11-12T14:17:10.323 回答