所以我有这个团队服务共享项目,我已在本地提取。我正在连接到需要凭据的远程数据库,以便对其执行任何操作。一切正常,我的connectionString
如下:
<add name="PluginSchedulerContext"
connectionString="metadata=res://*/PluginSchedulerDataModel.csdl|res://*/PluginSchedulerDataModel.ssdl|res://*/PluginSchedulerDataModel.msl;provider=System.Data.SqlClient;
provider connection string="
data source=xxx.xxx.xxx.xxx;
initial catalog=TestDB;
persist security info=True;
user id=xxx;
password=xxx;
MultipleActiveResultSets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
我想知道是否有更智能的方法来执行此操作并省略字符串中的密码字段app.config
,因为我看到它不属于.gitignore
。 (我从Laravel PHP迁移)
答案 0 :(得分:1)
更好的方法是,您可以更改连接字符串以连接到另一个数据库(测试数据库),然后您可以通过Replace Token task替换连接字符串,以便在通过{{3将应用程序部署到服务器时连接到实际数据库}或build。
如果您只想使用数据库,可以通过编程方式指定connectionstring。 (加密密码,然后将加密密码存储到您的应用程序,然后解密密码并将connectionstring与实际密码组合,并将其指定为实体上下文。解密本地可以在其他程序集中。)
var encryptedPassword="xxx";
var actualPassword=[decrypt password];
var connstring = [combine connectionstring with actual password];
var estringnew = new EntityConnectionStringBuilder(connstring);
estringnew.Metadata = XXX
var context = new BAEntities(estringnew.ToString());
var query =
from con in context.Contacts
where con.Addresses.Any((a) => a.City == "Seattle")
select con;
更多信息,请参阅release文章。通过这种方式,开发人员可以调试应用程序以了解实际密码。
如果您不想让开发人员知道实际密码,可以this
答案 1 :(得分:0)
如果您使用Windows身份验证(使用相同的Windows登录进行客户端和数据库访问),则不需要源代码中的用户名和密码。
或者您在部署时需要编辑配置。
否则凭据将在您的VCS中的项目配置中。
答案 2 :(得分:0)
尝试使用实体框架。这更容易! https://www.asp.net/entity-framework