D365 简化连接 Azure App Services

D365 simplified connection Azure App Services

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

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

例外情况非常普遍:

Object reference not set to an instance of an object

你们中有人看过或知道 issue/resolution 吗?

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>

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

尝试修改您的代码以抛出连接未就绪的异常 ID,这样您就可以获得底层 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;

从上面的侦听器,我得到以下错误

Could not load file or assembly 'Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference

是什么让我认为 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>