Asp.net
防止百分比字元變換
我正在嘗試將 Web 部署工具包與我們的 MVC3 項目一起使用,總體部署工作正常,但我們到數據庫的連接字元串的密碼包含一個百分號 (%) 字元,後跟兩個數字。部署工具包似乎將其轉換為十六進製字元替換。有沒有辦法防止這種字元替換並仍然保持連接字元串在開發人員機器上可用?我嘗試在 Web.Debug.Config 文件中進行替換,甚至添加 %25 而不僅僅是 % 以嘗試讓它僅替換 % 字元,它仍然替換完整的值。
例子:
<connectionStrings> <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;" </connectionStrings>被替換為
<connectionStrings> <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123r;database=Database1;" </connectionStrings>
將連接字元串的 pwd 部分設置為:
密碼=abc123%252572
經過多次試驗和錯誤,我發現它做了雙重通過。第一遍將**%2525轉換為%25**,第二遍將**%25轉換為%**。這就是為什麼當您使用 %2572 時,它會生成 r(%72 是 r 的 Unicode 程式碼)。在我看來,這似乎是解析器中的一個錯誤。或許知識淵博的人可以給出更好的解釋。
我遇到了完全相同的問題(當然密碼不同)。
為了讓數據庫的連接字元串在開發人員機器上工作,我修改了發佈設置以使用“不同”連接字元串。
對於您的範例: web.config 將包含:
<connectionStrings> <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;" </connectionStrings>在發佈設置下右鍵點擊項目,選擇發布…,進入設置->數據庫。對於數據庫 MyDB,輸入
server=Server1;uid=user1;pwd=abc123%72;database=Database1;這允許我的開發機器保留它與數據庫的連接,並且主機可以通過直接發布或通過 teamcity 自動使用正確的連接字元串。