通过


使用 XRM 工具中的连接字符串连接到 Microsoft Dataverse

使用 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 中执行操作

连接字符串参数

连接字符串包含一系列以分号分隔的名称=值对。 下表列出了可按任意顺序输入的支持参数。

参数名称 说明
ServiceUriService UriUrlServer 指定 Dataverse 环境的 URL。 URL 可以使用 http 或 https 协议,并且端口是可选的。 http 协议的默认端口为 80,https 协议的默认端口为 443。 服务器 URL 通常采用格式 https://<organization-name>.crm.dynamics.com

组织名称是必需的。
UserNameUser NameUserIdUser Id 指定与凭证关联的用户标识名称。
Password 为与凭证关联的用户名指定密码。
HomeRealmUriHome Realm Uri 指定主页领域 URI。
AuthenticationTypeAuthType 指定要连接到 Dataverse 环境的身份验证类型。 有效值为: AD、( IFD 已启用 AD FS)、 OAuthCertificateClientSecretOffice365。 但是,Dataverse 环境中仅允许OAuthCertificateClientSecretOffice365

注意Office365 身份验证类型已弃用,建议用作 OAuth 首选身份验证类型。 有关详细信息,请参阅 应执行哪些操作来修复应用程序代码(如果受影响?
RequireNewInstance 指定在连接仍处于活动状态时,如果再次调用,是否重用现有连接。 如果设置为,则系统会创建独特的连接。 如果设置为 false,则可以重复使用现有连接。
ClientIdAppIdApplicationId 指定在 Microsoft Entra ID 或 Active Directory 联合身份验证服务 (AD FS) 中注册应用程序时分配的 ClientID
ClientSecretSecret 当身份验证类型设置为 ClientSecret 时是必需的。 用于身份验证的客户端机密字符串。
RedirectUriReplyUrl 指定在 Microsoft Entra ID 或 Active Directory 联合身份验证服务(AD FS)中注册的应用程序的重定向 URI。

仅当身份验证类型指定为 OAuth时,此参数才适用。
TokenCacheStorePath 指定用户令牌缓存应存储位置的完整路径。 正在运行的进程应有权访问指定的路径。 此过程负责设置和配置此路径。

仅当身份验证类型指定为 OAuth时,此参数才适用。
LoginPrompt 指定如果未提供凭据,是否提示用户输入凭据。 有效值为:

- Always:始终提示用户指定凭据。
- Auto:允许用户在登录控制界面中选择是否显示提示。
- Never:不提示用户指定凭据。 如果使用没有用户界面的连接方法,请使用此值。

仅当身份验证类型指定为 OAuth时,此参数才适用。
StoreNameCertificateStoreName 指定可在其中找到由指纹标识的证书的存储名称。 设置时, Thumbprint 是必需的。
ThumbprintCertThumbprint 指定要在 S2S 连接期间使用的证书的指纹。 设置时,AppID是必需的,而UserIDPassword的值将被忽略。
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.LastCrmErrorCrmServiceClient.LastCrmException 属性的值,以了解连接失败的原因。

另见

使用 XRM 工具构建 Windows 客户端应用程序
使用 CrmServiceClient 构造函数连接到 Dataverse
使用 XRM 工具在 Dataverse 中执行操作
CrmServiceClient