命名空间中的CrmServiceClient
类Microsoft.Xrm.Tooling.Connector
具有一个将连接字符串作为单个参数的构造函数(此处记录: https ://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/xrm-tooling/use -connection-strings-xrm-tooling-connect?view=op-9-1)。
此连接字符串与连接字符串的其他用途相似/熟悉(名称/值对由等号分隔并用分号分隔),但我找不到任何可靠的文档来建议转义特殊字符的具体规则。如果在此特定上下文中,连接字符串值必须包含等号或分号,如何转义?虽然有一些关于 SQL 和实体框架连接字符串的文档,但它们在完全不同的上下文中使用,所以我看不出有任何理由相信这些上下文中的文档适用于CrmServiceClient
构造函数上下文。
有没有人有指向此上下文的明确文档的指针,和/或在此上下文中的足够经验来冒险进行相当明确的临时描述?
谢谢。
============================添加以响应评论请求
在对上述初始问题的评论中,一位好心的贡献者要求我添加有关我的用户故事的更多细节。要求是我添加自己的构建器/解析器。
我不会创建解析器。解析器将是CrmServiceClient
构造函数使用的解析器。它是 Xrm 工具连接器的一部分。
我还没有创建一个构建器来构建将传递给CrmServiceClient
构造函数的连接字符串。我的第一个任务是为该构建器创建一个单元测试,以确定它是否正确构建,这就是为什么我希望解析器强制执行明确的规则。
采取以下示例连接字符串:
AuthType=OAuth;Username=jsmith@contoso.onmicrosoft.com; Password=passcode;Url=https://contosotest.crm.dynamics.com;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d; RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;LoginPrompt=Auto
在这个基本示例中,连接字符串的键/值对集中没有任何值,其中包含任何特殊字符,因此无需转义。但是现在让我们想象一下,Password 不是字符串“passcode”,而是充满了特殊字符。假设密码是
"aB4$;";~^''dEfg'!
该密码本身以双引号开头,其中有另一个双引号,有两个单引号和两个分号。期望密码可能包含这样的字符并非没有道理。如果传递给CrmServiceClient
构造函数的连接字符串正是这样的:
AuthType=OAuth;Username=jsmith@contoso.onmicrosoft.com; Password="aB4$;";~^''dEfg'!;Url=https://contosotest.crm.dynamics.com;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d; RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;LoginPrompt=Auto
然后肯定会被错误地解析。
这是我试图通过CrmServiceClient
构造函数解析器使用的一组明确规则来解决的问题。