2

我使用的简化连接从MicrosoftDocument.XML.Tooling.Connector.dll示例可以在SDK中找到SDK \ SampleCode \ CS \ QuickStart \ SimplifiedConnection.csD365简化连接Azure应用服务

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

例外情况是非常普遍的:

Object reference not set to an instance of an object

任何你所看到的这个或知道问题/解决?

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; [email protected]; 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> 
+1

仅供参考,'CrmServiceClient'实现'IOrganizationService'这样你就可以在大多数情况下直接使用它,除非你特别需要OrganizationServiceProxy出于某种原因。 – Aron

+1

您可以将堆栈跟踪添加到您的问题吗? –

+0

也许你使用自己的ADFS进行身份验证,而这通过Internet不可用?在这种情况下,这可以在本地工作(因为ADFS位于您的内部网络中),但是您的应用服务将无法登录(因为它无法访问ADFS服务器) –

回答

0

从上面的听众,我得到了以下错误

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> 
0

最有可能存在监听器是与连接的问题。不知道,读取连接字符串可能会造成问题 - 仔细检查您在本地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; 
+0

谢谢,使用此代码我得到错误:Unable to Login to Dynamics CRM,它使我找到了上面的听众网络,从中我得到了实际的错误。 – Jorge