【问题标题】:D365 simplified connection Azure App ServicesD365 简化连接 Azure 应用服务
【发布时间】:2017-08-30 14:02:01
【问题描述】:

我正在使用从 Microsoft.Xrm.Tooling.Connector.dll 到 D365 的简化连接。示例可在 SDK SDK\SampleCode\CS\QuickStart\SimplifiedConnection 中找到。 cs

问题在于,当站点部署到 Azure 应用服务(以前的网站)时它不起作用,而在本地运行站点却可以正常运行。

异常很笼统:

对象引用未设置为对象的实例

你们中的任何人都见过这个或知道问题/解决方案吗?

CrmServiceClient crmConn = new CrmServiceClient(ConfigurationManager.ConnectionStrings["CRM"].ConnectionString);
IOrganizationService crmService = crmConn.OrganizationServiceProxy;
<connectionStrings>
<add name="CRM" connectionString="AuthType=Office365;Url=https://instance.crm4.dynamics.com; Username=name.name@domain.onmicrosoft.com; Password=Lu555" />

解决后编辑 在 web.config 中添加了以下监听器 Source

<system.diagnostics>
<trace autoflush="true" />
 <sources>
 <source name="Microsoft.Xrm.Tooling.Connector.CrmServiceClient"
 switchName="Microsoft.Xrm.Tooling.Connector.CrmServiceClient"
 switchType="System.Diagnostics.SourceSwitch">
 <listeners>
 <add name="console" type="System.Diagnostics.DefaultTraceListener" />
 <remove name="Default" />
 <add name ="fileListener" />
 </listeners>
 </source>
<source name="Microsoft.Xrm.Tooling.CrmConnectControl"
 switchName="Microsoft.Xrm.Tooling.CrmConnectControl"
 switchType="System.Diagnostics.SourceSwitch">
 <listeners>
 <add name="console" type="System.Diagnostics.DefaultTraceListener" />
 <remove name="Default" />
 <add name ="fileListener" />
 </listeners>
 </source>
 </sources>
 <switches>
  <add name="Microsoft.Xrm.Tooling.Connector.CrmServiceClient" value="Verbose" />
 <add name="Microsoft.Xrm.Tooling.CrmConnectControl" value="Verbose" />
 <add name="Microsoft.Xrm.Tooling.WebResourceUtility" value="Verbose" />
 </switches>
 <sharedListeners>
 <add name="fileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="XRMToolingLogs.log" />
 </sharedListeners>
</system.diagnostics>

【问题讨论】:

  • 仅供参考,CrmServiceClient 实现了IOrganizationService,因此您可以在大多数情况下直接使用它,除非您出于某种原因特别需要 OrganizationServiceProxy。
  • 您可以将堆栈跟踪添加到您的问题中吗?
  • 也许您使用自己的 ADFS 进行身份验证,这在 Internet 上是不可用的?在这种情况下,这将在本地工作(因为 ADFS 在您的内部网络中),但您的应用服务将无法登录(因为它无法访问 ADFS 服务器)

标签: azure dynamics-crm office365 azure-web-app-service dynamics-crm-online


【解决方案1】:

连接很可能存在问题。不确定,读取连接字符串可能有问题 - 仔细检查本地 web.config 中的字符串是否与您在 Azure 应用服务的连接字符串配置 UI 中输入的字符串完全相同。

尝试修改您的代码以抛出异常 id the connection is not ready,这样您就可以得到底层的 CRM 错误:

CrmServiceClient crmConn = new CrmServiceClient(ConfigurationManager.ConnectionStrings["CRM"].ConnectionString);
if (!crmConn.IsReady)
{
    throw new Exception($"Crm Connection Not Ready. Last error: {crmConn.LastCrmError}");
}
IOrganizationService crmService = crmConn.OrganizationServiceProxy;

【讨论】:

  • 谢谢,使用此代码我得到了错误:无法登录到 Dynamics CRM,这让我找到了上面监听器的网络,从中我得到了实际错误。
【解决方案2】:

从上面的监听器中,我得到了以下错误

无法加载文件或程序集“Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配

是什么让我认为 NuGet 包存在问题,因为我已经通过 Visual Studio 中的管理 NuGet 包进行了全部安装。

我已通过在 web.config 中添加此错误来解决该错误。在此之后,我的网站可以正常连接到 Azure 网站中的 D365。

 <dependentAssembly>
    <assemblyIdentity name="Microsoft.Xrm.Sdk" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
  </dependentAssembly>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多