2010-07-05 61 views
61

我在web配置有一個連接字符串:逃生在web.config中的連接字符串報價

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" /> 

正如你看到的,有一個引號符號(「),密碼(與其他部門給我。不能更改此數據庫的用戶密碼)

如何做我必須逃離這個報價連接字符串中

順便說一句:我已經嘗試過& QUOT;字符串在沒有工作 - 費周折。?。 .net得到一個ArgumenException然後:「初始化字符串的格式不符合從索引57開始的規格。「 57是其中&」在我的連接字符串中。 我也嘗試將密碼部分放在' - 也沒有工作。

也試過「」和\」 - web.config中不能再解析

感謝您的解決方案:

我不得不把雙引號的轉義結合起來,把用戶密碼。單引號:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" providerName="System.Data.SqlClient" /> 

回答

78

使用&quot;代替"逃脫它

web.config文件是一個XML文件,所以你SH。應該使用XML轉義。

connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word" 

請參閱this論壇主題。

更新

&quot;應該工作,但因爲它沒有,你嘗試過一些對.NET其他字符串轉義序列? \"""

更新2:

嘗試單引號爲的connectionString:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word' 

或者:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word' 

更新3:

MSDN(SqlConnection.ConnectionString性):

要包括含有分號,單引號字符或雙引號字符值,該值必須被包含在雙引號。如果該值同時包含分號和雙引號字符,則該值可以用單引號括起來。

所以:

connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" 

的問題是不是網絡。config,但連接字符串的格式。在連接字符串中,如果(鍵值對中的)值有",則需要將值包含在'中。所以,雖然不起作用,Password='somepass"word'呢。

+0

這不起作用。如果它是簡單的xml,但不在屬性值內,這種方式可以工作。 – 2010-07-05 07:57:46

+0

@Sebastian P.R. Gingter - 奇怪,這是行不通的。你嘗試過其他的轉義序列嗎? – Oded 2010-07-05 08:03:13

+0

是的。當使用「」和「」時,無法分析整個Web.config。 & quot;未被替換爲「在字符串內部,並且查詢字符串不能被解析導致規定的錯誤。 如果這很容易,我不會問這裏;-) – 2010-07-05 08:06:32

1

使用&quot;這應該工作。

+0

nope。不工作。已經嘗試過這之前詢問這裏...不會問... – 2010-07-05 07:59:42

42
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word" 

由於web.config文件是XML,你需要逃避的五個特殊字符:

&amp; - >&符號,U + 0026
&lt; - ><左尖括號,小於號,U + 003C
&gt; - >>直角支架,大於號,U + 003E
&quot; - >"引號,U + 0022
&apos; - >'撇號,U + 0027

+是沒有問題的,我想。

+0

這是我的密碼,存儲在web.config中的&符號。很明顯,雖然在追蹤時很不明顯。 Azure網站在web.config中出現這種情況時出現此錯誤 - 「由於發生了內部服務器錯誤,無法顯示該頁面。」它似乎也沒有寫任何錯誤日誌。感謝問題的OP和您提醒此提醒。 – 2014-07-17 06:02:57

3

如果&quot;不工作,則嘗試使用&#34;