2016-10-05 149 views
0

所以我有這個團隊服務共享項目,我已經在本地拉。我連接到需要憑證的遠程數據庫,以便對其執行任何操作。一切正常,我的connectionString如下:C#.NET遠程數據庫連接

<add name="PluginSchedulerContext" 
    connectionString="metadata=res://*/PluginSchedulerDataModel.csdl|res://*/PluginSchedulerDataModel.ssdl|res://*/PluginSchedulerDataModel.msl;provider=System.Data.SqlClient; 

    provider connection string=&quot; 
    data source=xxx.xxx.xxx.xxx; 
    initial catalog=TestDB; 
    persist security info=True; 
    user id=xxx; 
    password=xxx; 
    MultipleActiveResultSets=True; 
    App=EntityFramework&quot;" 

    providerName="System.Data.EntityClient" /> 

我想知道是否有做到這一點,省略密碼字段中的字符串中,因爲app.config我看到一個更聰明的方法是不.gitignore的一部分。 (我正在從Laravel PHP遷移)

回答

1

更好的方式是,你可以改變的ConnectionString連接到另一個數據庫(測試數據庫),那麼你可以通過替換的ConnectionString Replace Token task連接到實際的數據庫,當你通過buildrelease部署應用服務器。

如果您只是想使用數據庫,可以通過編程方式指定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; 

的更多信息,你可以參考this文章。爲此,開發人員可以調試應用程序以瞭解實際的密碼。

如果你不想讓開發者知道實際的密碼,就可以encrypt connectionstring

0

如果您使用Windows身份驗證(使用相同Windows登錄的客戶端和數據庫訪問),則不需要源代碼中的用戶名和密碼。

或者您需要在部署時編輯配置。

否則,憑證將在您的VCS中的項目配置中。

+0

SQL驗證是不是在我的控制中的一部分...所以不幸沒有WinAuth。那我想這是不可能的 – Norgul