Visual Studio Web Config - 忽略连接字符串中的SQL用户名密码?

时间:2014-11-10 21:42:36

标签: sql-server connection-string sqlexception

背景:我首先使用代码创建了一个基本的实体框架存储库模式。然后我创建了一个测试项目,创建的第一个单元测试是针对数据库测试一些基本的存储库调用。奇怪的是,我注意到实体框架正在我的users \ myusername目录中创建一个数据库!

经过一番研究后,我意识到最好的做法是为我创建一个数据库,使用带有已定义用户名和密码的SSMS进行一些测试。我完成了这项工作,并在VS 2012中的服务器资源管理器中测试了一个已创建的连接,该连接成功。我的连接字符串如下所示:

<connectionStrings>
    <add name="TestConnection" connectionString="Data Source=.\SQLEXPRESS;User ID=DevSqlUser;Password=devsql;Initial Catalog=TestDatabase;MultipleActiveResultSets=True;Integrated Security=False;" providerName="System.Data.SqlClient" />
  </connectionStrings>

但是,现在当我运行我的测试应该使用连接字符串按名称实例化存储库时,我得到一个奇怪的异常,它正在使用我的Windows凭据!为什么这样做?我没有线索。我的网络配置中没有任何身份模拟。

System.Data.SqlClient.SqlException:无法打开数据库&#34; TestConnection&#34;登录请求。登录失败。用户&#39; {domain} {myusername}&#39;

登录失败

任何人都知道它为什么不使用我在连接字符串中指定的用户ID?

2 个答案:

答案 0 :(得分:0)

看起来您的SQL Express仅设置为Windows身份验证。查看SQL数据库上的身份验证模式设置。如果您使用的是Windows身份验证,则无需提供用户名和密码。如果您需要使用用户名和密码,可以使用混合模式。

从SSMS连接到数据库,右键单击服务器并选择属性。在安全性下,您可以看到身份验证模式设置。根据您的需要设置。

答案 1 :(得分:0)

答案很尴尬!即使类的所有代码都在我测试的项目中,连接字符串也必须从web.config复制到app.config中。哇我觉得自己像个笨蛋一个新手的错误....大声笑我今天早上几个小时都在搅拌!