使用 XRM 工具,可以使用连接字符串连接到 Dataverse 环境。 此方法类似于与 SQL Server 一起使用的连接字符串的概念。 配置文件原生支持连接字符串,包括加密配置节以实现最大安全性的功能。 使用此功能可以在部署时配置 Dataverse 连接,而不是在应用程序中对其进行硬编码。
阅读以下有关在应用程序代码中使用连接字符串的重要信息。
重要
Microsoft建议使用可用的最安全的身份验证流。 本文中所述的身份验证流要求在应用程序中高度信任,并且存在其他流中不存在的风险。 仅当其他更安全的流(如托管标识)不可行时,才应使用此流。
创建连接字符串
请在app.config 文件或web.config 文件中为您的项目指定连接字符串,如以下示例所示。
<connectionStrings>
<add name="MyCDSServer" connectionString="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;TokenCacheStorePath=c:\MyTokenCache;LoginPrompt=Auto"/>
</connectionStrings>
重要
如果将任何敏感信息添加到app.configweb.config file或帐户密码,请采取适当的安全预防措施来保护信息。
创建连接字符串后,使用它来创建对象 CrmServiceClient 。
//Use the connection string named "MyCDSServer"
//from the configuration file
CrmServiceClient svc = new CrmServiceClient(ConnectionString);
或者,可以使用该 ServiceClient 类。
ServiceClient svc = new ServiceClient(ConnectionString);
注释
若要访问代码中的连接字符串,请包括以下 using 指令来引用 System.Configuration 命名空间: using System.Configuration;
创建服务客户端对象后,使用对象在 Dataverse 中执行操作。 有关详细信息,请参阅 使用 XRM 工具在 Dataverse 中执行操作。
连接字符串参数
连接字符串包含一系列以分号分隔的名称=值对。 下表列出了可按任意顺序输入的支持参数。
| 参数名称 | 说明 |
|---|---|
ServiceUri、Service Uri、Url 或 Server |
指定 Dataverse 环境的 URL。 URL 可以使用 http 或 https 协议,并且端口是可选的。 http 协议的默认端口为 80,https 协议的默认端口为 443。 服务器 URL 通常采用格式 https://<organization-name>.crm.dynamics.com组织名称是必需的。 |
UserName、User Name、UserId 或 User Id |
指定与凭证关联的用户标识名称。 |
Password |
为与凭证关联的用户名指定密码。 |
HomeRealmUri 或 Home Realm Uri |
指定主页领域 URI。 |
AuthenticationType 或 AuthType |
指定要连接到 Dataverse 环境的身份验证类型。 有效值为: AD、( IFD 已启用 AD FS)、 OAuth、 Certificate、 ClientSecret或 Office365。 但是,Dataverse 环境中仅允许OAuth、Certificate、ClientSecret 和 Office365。注意: Office365 身份验证类型已弃用,建议用作 OAuth 首选身份验证类型。 有关详细信息,请参阅 应执行哪些操作来修复应用程序代码(如果受影响? |
RequireNewInstance |
指定在连接仍处于活动状态时,如果再次调用,是否重用现有连接。 如果设置为false,则可以重复使用现有连接。 |
ClientId、AppId 或 ApplicationId |
指定在 Microsoft Entra ID 或 Active Directory 联合身份验证服务 (AD FS) 中注册应用程序时分配的 ClientID。 |
ClientSecret 或 Secret |
当身份验证类型设置为 ClientSecret 时是必需的。 用于身份验证的客户端机密字符串。 |
RedirectUri 或 ReplyUrl |
指定在 Microsoft Entra ID 或 Active Directory 联合身份验证服务(AD FS)中注册的应用程序的重定向 URI。 仅当身份验证类型指定为 OAuth时,此参数才适用。 |
TokenCacheStorePath |
指定用户令牌缓存应存储位置的完整路径。 正在运行的进程应有权访问指定的路径。 此过程负责设置和配置此路径。 仅当身份验证类型指定为 OAuth时,此参数才适用。 |
LoginPrompt |
指定如果未提供凭据,是否提示用户输入凭据。 有效值为: - Always:始终提示用户指定凭据。- Auto:允许用户在登录控制界面中选择是否显示提示。- Never:不提示用户指定凭据。 如果使用没有用户界面的连接方法,请使用此值。仅当身份验证类型指定为 OAuth时,此参数才适用。 |
StoreName 或 CertificateStoreName |
指定可在其中找到由指纹标识的证书的存储名称。 设置时, Thumbprint 是必需的。 |
Thumbprint 或 CertThumbprint |
指定要在 S2S 连接期间使用的证书的指纹。 设置时,AppID是必需的,而UserID和Password的值将被忽略。 |
Integrated Security |
指定使用当前 Windows 凭据尝试为实例创建令牌。 截至 NuGet 发布的 Microsoft.CrmSdk.XrmTooling.CoreAssembly 版本 9.1.0.21 |
注释
当使用 OAuth AuthType\AuthenticationType 时
出于开发和原型制作目的,提供了以下 AppId 或 ClientId 和重定向 URI,以便在 OAuth 流中使用。
对于生产用途,请在 Azure 管理门户中创建特定于租户的 AppId 或 ClientId。
示例 AppId 或 ClientId = 51f81489-12ee-4a9e-aaae-a2591f45987d
示例 RedirectUri = app://58145B91-0C36-4500-8554-080854F2AC97
连接字符串示例
以下示例演示如何使用连接字符串连接到联机部署和身份验证方案。 有关本地和 IFD 部署实例的连接字符串示例,请参阅 使用 XRM 工具中的连接字符串进行连接。
使用 Office 365 的命名账户
使用 UserName 或 Password 通过 Office365 创建与 Dataverse 的新连接。
注释
这 AuthType 已弃用。 将 OAuth 用作首选身份验证类型。 有关详细信息,请参阅 使用 Office365 进行身份验证。
<add name="MyCDSServer"
connectionString="
AuthType=Office365;
Username=jsmith@contoso.onmicrosoft.com;
Password=passcode;
Url=https://contoso.crm.dynamics.com"/>
使用 Microsoft 365 中的命名账户进行 OAuth,并通过用户界面提示进行身份验证
使用 UserID 或密码通过 OAuth 创建与 Dataverse 的新连接。
注释
OAuth 是使用交互式流时连接到 Dataverse 的首选身份验证类型。 此身份验证类型完全支持 Microsoft Entra ID 条件访问和多重身份验证的功能。
<add name="MyCDSServer"
connectionString="
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;
TokenCacheStorePath=c:\MyTokenCache;
LoginPrompt=Auto"/>
在备用 UX 中,OAuth 使用当前的已登录用户提示身份验证
使用当前通过 OAuth 登录的用户创建与 Dataverse 的新连接。
注释
OAuth 是使用交互式流时连接到 Dataverse 的首选身份验证类型。 此身份验证类型完全支持 Microsoft Entra ID 条件访问和多重身份验证的功能。
<add name="MyCDSServer"
connectionString="
AuthType=OAuth;
Username=jsmith@contoso.onmicrosoft.com;
Integrated Security=true;
Url=https://contosotest.crm.dynamics.com;
AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;
RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;
TokenCacheStorePath=c:\MyTokenCache\msal_cache.data;
LoginPrompt=Auto"/>
基于证书的身份验证
使用应用程序或客户端 ID 和证书创建新的到 Dataverse 的连接。
<add name="MyCDSServer"
connectionString="
AuthType=Certificate;
url=https://contosotest.crm.dynamics.com;
thumbprint={CertThumbPrintId};
ClientId={AppId};"
/>
ClientId 或基于客户端机密的身份验证
使用应用程序或客户端 ID 和客户端密码创建新的到 Dataverse 的连接。
<add name="MyCDSServer"
connectionString="
AuthType=ClientSecret;
url=https://contosotest.crm.dynamics.com;
ClientId={AppId};
ClientSecret={ClientSecret}"
/>
确定您的连接状态
要确定连接请求是否成功,请检查 CrmServiceClient.IsReady 属性的值。 如果 为 true,则连接成功,并且已准备就绪。 否则,请检查CrmServiceClient.LastCrmError 和 CrmServiceClient.LastCrmException 属性的值,以了解连接失败的原因。
另见
使用 XRM 工具构建 Windows 客户端应用程序
使用 CrmServiceClient 构造函数连接到 Dataverse
使用 XRM 工具在 Dataverse 中执行操作
CrmServiceClient