连接字符串中包含特殊字符的密码

18

我需要从ASP.NET应用程序连接到我的Dynamics CRM 365本地实例。我的问题在于连接帐户的密码像这样:T,jL4O&vc%t;30

  <connectionStrings>
    <add name="CRM365" connectionString="AuthType=AD;Url=http://crm.xxx.com/CRM365; Domain=test; Username=test; Password=T,jL4O&vc%t;30" />
  </connectionStrings>

我遇到了这个错误:vc未定义。
请帮忙解决。谢谢。

你目前遇到了什么错误? - Krazy_Tech
1
你需要对它进行转义或引用,但这取决于你使用的提供程序。如何到达那里取决于你是从配置文件中读取还是在代码中构建。请编辑你的问题以提供详细信息。 - madreflection
无论如何,我建议您使用连接字符串生成器(例如 SQL Server 的 SqlConnectionStringBuilder)并查看它如何根据您分配给它的密码构建连接字符串。这应该能给您一个想法。 - madreflection
@madreflection 我已经编辑了我的问题。我正在从连接字符串中读取它。 - Oscar Dominguez Navarrete
你使用的是哪个提供程序?是用于Dynamics CRM的CData提供程序吗? - madreflection
2个回答

33
在这个例子中,我看到两件事情:
  1. XML 中的 & 应该使用 &amp; 转义(这篇回答有很好的解释)
  2. 连接字符串中的 ;,你应该用单引号括起来密码
因此,以下内容适用于您:
<connectionStrings>
    <add name="CRM365" connectionString="AuthType=AD;Url=http://crm.xxx.com/CRM365; Domain=test; Username=test; Password='T,jL4O&amp;vc%t;30'" />
</connectionStrings>

编辑(我刚刚为自己尝试了一下):
此外,另一种变体是使用转义的双引号:

<connectionStrings>
    <add name="CRM365" connectionString="AuthType=AD;Url=http://crm.xxx.com/CRM365; Domain=test; Username=test; Password=&quot;T,jL4O&amp;vc%t;30&quot;" />
</connectionStrings>

摘要:
请使用password='T,jL4O&amp;vc%t;30';或者password=&quot;T,jL4O&amp;vc%t;30&quot;;


2
为了在被包含在 ' 中的参数值中转义一个 ',只需将其加倍,例如 '' - Ludwig Behm

-2

我认为你可以为连接字符串设置随机密码。如果密码中出现 ';',则请将其删除,因为连接字符串会将其解释为密码完成。

<connectionStrings>
<add name="CRM365" connectionString="AuthType=AD;Url=http://crm.xxx.com/CRM365; Domain=test; Username=test; Password=T,jL4O&vc%t30" />


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接