如何在连接string中包含&符号?
我正在使用entity framework4为一个简单的应用程序,并希望将我的连接凭据烤到以下连接string:
<connectionStrings> <add name="MyEntities" connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings>
但是,密码(我无法更改)包含&符号。 ASP.NET引发: Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.
Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.
如果我用&
,我得到一个SqlException: Login failed for user 'myUser'.
通常这个技巧是有效的,但是我猜测有些东西是失败的,因为这在技术上是连接string中的连接string。
我应该在这里做什么? 我的大部分课程包括如下代码:
using (var context = new MyEntities()) { // do work }
更新:事实certificate,我使用的凭据是一个域帐户,所以我真正需要的是在连接stringIntegrated Security=True
而不是密码。
如接受的答案中所示,对&符号进行编码应该可以正常工作,尽pipe我还没有对它进行testing。
您将需要像使用所有.config文件所在的任何XML文档一样使用转义序列。
- &符号=&=
&
- 大于=> =
>
- 小于= <=
<
- Apostrophe ='=
'
- Quote =“=
"
您也可以使用CDATA
标签,以便您可以使用这些非法字符
<![CDATA[
并以]]>
结尾]]>
<connectionStrings> <add name="MyEntities" connectionString=" metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl; provider=System.Data.SqlClient; provider connection string=" Data Source=localhost\DEV; Initial Catalog=MyDB;UserId=myUser; Password=<![CDATA[jack&jill]]>; MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings>
这在技术上是连接string内的连接string
你试过两次逃跑吗?
&amp;