IIS:使用 AppPool Identity 访问 Microsoft CRM 2013



我的IIS MVC网站连接到Microsoft CRM 2013。用户/域/密码在 web.config 中设置,这工作正常。

现在我想删除 web.config 中的硬编码凭据。要访问CRM,我想使用AppPool Identity的凭据。此用户在 MS CRM 中具有足够的服务器权限和管理员角色。我尝试了这种方式:

Uri organizationUri = new Uri(WebConfigurationManager.AppSettings["CrmUrl"]);
var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var orgProxy = new OrganizationServiceProxy(organizationUri, null, credentials, null);

这行不通。默认网络凭据为空。

我需要帮助来管理这个问题。谢谢!

与其自己创建凭据和组织服务代理,不如让 CrmConfiguration 处理以下内容:

您的 Web.config 将如下所示:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client"/>
  </configSections>
  <connectionStrings>
  <!-- On-Premise with integrated Authentication -->
      <add name="MyOnPremiseConnection" connectionString="Url=http://SERVER-NAME/ORG-NAME/XRMServices/2011/Organization.svc;" />
  </connectionStrings>
  <microsoft.xrm.client>
    <contexts default="MyOnPremiseContext">
      <!-- On Premise CRM-->
      <add name="MyOnPremiseContext" connectionStringName="MyOnPremiseConnection" serviceName="MyService" />
    </contexts>
    <services default="MyService">
      <add name="MyService" serviceCacheName="Xrm" />
    </services>
    <serviceCache default="Xrm">
      <add name="Xrm" type="Microsoft.Xrm.Client.Services.OrganizationServiceCache, Microsoft.Xrm.Client" cacheMode="Disabled" />
    </serviceCache>
  </microsoft.xrm.client>
</configuration>

您的代码将像这样连接到 CRM:

using (var servicecontext = CrmConfigurationManager.CreateContext("MyOnPremiseConnection", true) as CrmOrganizationServiceContext)
{
    var query = new QueryExpression
    {
        EntityName = "account",
        ColumnSet = new ColumnSet("name"),
        TopCount = 10,
    };
    var top10accounts = servicecontext.RetrieveMultiple(query).Entities;
}

参考:简化与Microsoft动态CRM的连接

最新更新