连接到 Microsoft Dynamics 365 在控制台应用程序中工作但不在 Web 应用程序中工作

Connection to Microsoft Dynamics 365 working in console app but not in web app

我需要修改现有代码以连接到 Microsoft Dynamics 365 而不是本地安装。我目前正在使用 Microsoft.Xrm.Tooling.Connector,我们希望保留它,以便尽可能降低对代码的影响。

所以我更新了我的连接字符串以使用以下格式: AuthType=ClientSecret;url=https://xxx.dynamics.com;ClientId=xxx;ClientSecret=xxx;

我已经将 nuget 包 Microsoft.CrmSdk.XrmTooling.CoreAssembly 更新到最新版本 9.1.0.64。其他相关包同时更新

我使用的代码是:

var client = new CrmServiceClient(connstring);

不幸的是,这在我的 .net 4.7.1 中不起作用 web.app 我收到以下错误:

CurrentAccessToken = 'CurrentAccessToken' 引发了 'System.NullReferenceException'

类型的异常

LastCrmError = "一个或多个错误发生。=> 发送请求时发生错误。=> 无法连接到远程服务器 => 连接尝试失败,因为连接方在一段时间后没有正确响应时间,或建立的连接失败..."

我也已经尝试添加以下行,但错误仍然存​​在:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

为了确保它与我现有的 Web 应用程序无关,我已经开始了一个新项目,并且包含了一个新的 Web 应用程序 (mvc) 和一个新的控制台应用程序。即使在那个新项目中,Web 应用程序无法运行,但控制台应用程序可以运行。

我看到的一个区别是,对于 CrmConnectOrgUriActual,控制台应用程序包含 XRMServices/2011/Organization.svc/web?SDKClientVersion=9.0.45.2156 但在网络应用程序中,这只是 XRMServices/2011/Organization.svc/

Web 应用程序中可能需要配置一些额外的东西吗? 有人可以帮我解决这个问题吗?

更新

我能够看到更多错误消息,它还提到了以下消息:AuthorityUnable to connect to CRM: Need a non-empty authority

我根据完整的错误详细信息对“需要非空权限”进行了新搜索。 其中一个结果是以下文章:https://www.kashanahmed.com/2020/06/we-were-trying-to-connect-dynamics-365.html

看来我的问题是我们公司的代理服务器引起的。

在 web.config 中添加以下行解决了我的问题

  <system.net>
    <defaultProxy useDefaultCredentials="true" enabled="true">
      <proxy usesystemdefault="True" proxyaddress="http://theproxy" />
    </defaultProxy>
  </system.net>