如何在连接字符串中包含与号?
Posted
技术标签:
【中文标题】如何在连接字符串中包含与号?【英文标题】:How to include ampersand in connection string? 【发布时间】:2011-04-18 23:16:38 【问题描述】:我正在为一个简单的应用程序使用 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="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.
如果我用&amp;
替换密码中的& 符号,我会得到SqlException: Login failed for user 'myUser'.
通常这个技巧有效,但我猜有些东西失败了,因为这在技术上是连接字符串中的连接字符串。
我应该在这里做什么?我的大部分课程都包含如下代码:
using (var context = new MyEntities())
// do work
更新:原来我使用的凭据是域帐户,所以我真正需要的是连接字符串中的Integrated Security=True
,而不是密码。
按照接受的答案应该对 & 符号进行编码,虽然我还没有测试过。
【问题讨论】:
【参考方案1】:您需要像对任何 XML 文档一样使用转义序列,这就是所有 .config 文件。
与号 = & =&amp;
大于=>=&gt;
小于 = <
撇号 = ' = &apos;
引用 = " = &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="
Data Source=localhost\DEV;
Initial Catalog=MyDB;UserId=myUser;
Password=<![CDATA[jack&jill]]>;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
【讨论】:
我已经尝试过了,正如我的问题中所述。似乎错误的密码被发送到实体框架。 另外,让您尝试使用应用程序外部连接字符串中的凭据登录到该 SQL Server 实例 另外,让我评论说转义 XML 字符通常可以正常工作。例如,在 web.config 文件中的以上是关于如何在连接字符串中包含与号?的主要内容,如果未能解决你的问题,请参考以下文章