如何在连接字符串中包含&符号?

时间:2010-09-29 17:42:46

标签: c# asp.net configuration entity-framework-4

我正在将Entity Framework 4用于一个简单的应用程序,并希望将我的连接凭据烘焙到以下连接字符串中:

<connectionStrings>
    <add name="MyEntities"    
         connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

但是,密码(我无法更改)包含&符号。 ASP.NET抛出: Configuration Error: An error occurred while parsing EntityName. Line XX, position YYY.

如果我用&amp;替换密码中的&符号,我得到一个SqlException: Login failed for user 'myUser'.通常这个技巧有效,但我猜测某些东西失败了,因为这在技术上是连接中的连接字符串字符串。

我该怎么办?我的大多数课程都包含以下代码:

using (var context = new MyEntities()) {
   // do work
}

更新:事实证明我使用的凭据是域帐户,因此我真正需要的是连接字符串中的Integrated Security=True而不是密码。

按照接受的答案中的指示对&符号进行编码可以正常工作,但我还没有测试过。

1 个答案:

答案 0 :(得分:88)

您需要像使用任何XML文档一样使用转义序列,这是所有的.config文件。

  • &符号&amp; = &amp;
  • 大于=&gt; = &gt;
  • 小于=&lt; = &lt;
  • Apostrophe ='= &apos;
  • Quote =“= &quot;

您还可以使用CDATA标记,以便使用这些非法字符

<![CDATA[,以]]>

结尾
<connectionStrings>
    <add name="MyEntities" connectionString="
        metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;
        provider=System.Data.SqlClient;
        provider connection string=&quot;
        Data Source=localhost\DEV;
        Initial Catalog=MyDB;UserId=myUser;
        Password=<![CDATA[jack&jill]]>;
        MultipleActiveResultSets=True&quot;" 
        providerName="System.Data.EntityClient" />
</connectionStrings>