Escape quote in web.config connection string

无人久伴 提交于 2019-11-26 10:37:38

问题


I have a connection string in my web config:

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

As you see, there is a quotation sign ( \" ) in the password (given from other dept. I can\'t change this db users password).

How do I have to escape the quote in this connection string?

Btw: I already tried & quot; in the string. That didn\'t work - ado.net got an ArgumenException then: \"Format of the initialization string does not conform to specification starting at index 57.\" 57 is where the & quot; is in my connection string. I also tried enclosing the password part in \' - didn\'t work either.

Also tried \"\" and \\\" - web.config can\'t be parsed then.

Thanks for the solution:

I had to combine the escaping of the double quote and putting the password in single quotes:

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

回答1:


Use &quot; instead of " to escape it.

web.config is an XML file so you should use XML escaping.

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

See this forum thread.

Update:

&quot; should work, but as it doesn't, have you tried some of the other string escape sequences for .NET? \" and ""?

Update 2:

Try single quotes for the connectionString:

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

Or:

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

Update 3:

From MSDN (SqlConnection.ConnectionString Property):

To include values that contain a semicolon, single-quote character, or double-quote character, the value must be enclosed in double quotation marks. If the value contains both a semicolon and a double-quote character, the value can be enclosed in single quotation marks.

So:

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

The issue is not with web.config, but the format of the connection string. In a connection string, if you have a " in a value (of the key-value pair), you need to enclose the value in '. So, while Password=somepass"word does not work, Password='somepass"word' does.




回答2:


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

Since the web.config is XML, you need to escape the five special characters:

&amp; -> & ampersand, U+0026
&lt; -> < left angle bracket, less-than sign, U+003C
&gt; -> > right angle bracket, greater-than sign, U+003E
&quot; -> " quotation mark, U+0022
&apos; -> ' apostrophe, U+0027

+ is not a problem, I suppose.




回答3:


if &quot; isn't working then try &#34; instead.




回答4:


Odeds answer is almost complete. Just one thing to add.

  1. Escape xml special chars like Emanuele Greco said.
  2. Put the password in single quotes like Oded said
  3. (this one is new) Escape single ticks with another single tick (ref)

having this password="'; this sould be a valid connection string:

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



回答5:


Use &quot; That should work.



来源:https://stackoverflow.com/questions/3177861/escape-quote-in-web-config-connection-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!