簡體   English   中英

如何使C#.net中的應用程序的連接字符串獨立於計算機?

[英]How to make the connection string of an application in C#.net,Computer independent?

當我將C#.net中的應用程序從一台計算機轉移到另一台計算機時,每次數據庫文件的位置更改時,我都必須更改連接字符串。

如何防止這種情況發生,而不必一次又一次更改連接字符串?

當數據庫的位置更改時,某些地方必須更改。 在ODBC時代,您可以定義系統范圍的連接,並僅在連接字符串中指定名稱。 但是,如果服務器移動,則無論如何都必須更改ODBC。

我可以在這里想到一些解決方案。 一種是,如果您的數據庫在本地計算機上運行,​​請使用localhost而不是計算機名稱。

如果它是一個文件,請創建一個網絡共享並將其放在上面,以便您使用\\\\localhost\\shareName\\file.db

如果它是服務器數據庫並且可以在其他計算機上,請通過使用主機文件使用DNS名稱並分配一個通用名稱,以便可以在其他網絡中使用。

  • 如果可行,請將數據庫放在網絡上,並在連接字符串中指定網絡位置;否則,請執行以下操作。

    要么

  • 使用“ 連接字符串生成器”修改連接字符串的可變部分。

使用相對路徑。 對於大多數情況,您只能使用內置的| DataDirectory | ,它轉換為您正在從中運行的基本目錄(或在ASP.NET方案中為App_Data)。

如果使用的是客戶端服務器數據庫(如SQL Express),則還應將服務器名稱設置為.\\SQLEXPRESS類的名稱,它將使用本地實例。

這是一個不時出現的舊版本。

Visual Studio能夠支持多個構建環境,並允許您指定特定於環境的值(即,數據庫連接字符串),以便您可以在任何需要的地方進行測試。

從Gu的博客中提取此信息,可以在此處看到完整的帖子:

事實證明,您可以在Visual Studio構建環境中輕松地自動執行此配置過程(並且可以在IDE中以及命令行/自動構建中都可以使用)。 以下是您執行此操作的高級步驟。 它們可與VS 2005和VS 2008一起使用。

  1. 使用ASP.NET Web應用程序項目(具有基於MSBuild的項目文件)
  2. 打開VS Configuration Manager並為您的項目和解決方案創建新的“ Dev”,“ QA”,“ Staging”構建配置
  3. 在您的項目中添加新的“ web.config.dev”,“ web.config.qa”和“ web.config.staging”文件,並對其進行自定義以包含應用程序特定於模式的配置設置
  4. 在您的項目文件中添加一個新的“ pre-build event”命令,該命令可以在每次構建項目時自動以適當的模式特定版本復制到項目中的web.config文件中(例如:如果解決方案位於“開發”配置,它將web.config.dev設置復制到主web.config文件中)。

我相信在VS 2010中,大部分的設置工作都是在創建新應用程序時完成的,但原理仍然相同。 如果您願意這樣做,則可以跳過預構建事件,而希望通過代碼拉入連接字符串。 在這個已回答的問題上,有一個關於StackOverflow的示例

答案的開始(或者至少是我更可能實現此目的的方法)是將每個連接字符串值存儲在單獨的connections.config文件中,該文件的名稱對於環境而言是唯一的。 這將僅包含來自web.config文件的connectionStrings部分的值。 我喜歡這樣做,因為這意味着添加新環境並不意味着開發人員可以觸摸主要的web.config文件,而且您還可以做一些服務器端的技巧,以從站點的webroot中刪除數據庫連接字符串,從而使其更加安全。

可以在此處看到用於將connectionStrings刪除到另一個錯誤的方法: http : //www.bigresource.com/Tracker/Track-ms_sql-cberGbNT/

我還將研究擁有可通過網絡訪問的數據庫版本,而不是讓每個開發人員在自己的環境中都擁有一個。 如果您必須斷開已完成的工作,這是有道理的,但是從管理的角度來看,對於項目的每個階段(開發,暫存和生產),實際上應該只有一個數據庫。

希望對您有所幫助,並可以在沒有任何意義的地方隨意提出后續問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM