CRM OnPrem--> 插件--> Connect to External (SOAP) Webservice Error with connection

CRM OnPrem--> Plugin--> Connect to External (SOAP) Webservice Error with connection

我正在尝试从 CRM 插件连接到外部 SOAP API。它给我错误。

我正在使用 None 的隔离模式。 当我使用控制台应用程序连接相同的 API 时,它工作正常。我从服务器执行了控制台应用程序,它连接并响应正常。

我用谷歌搜索了一下,得到了一些线索,但可能我缺乏理解/查明问题的能力。

下面的代码片段

WebRequest request = WebRequest.Create("URL");                  

                    request.Method = "GET";

                    //request.Credentials = new NetworkCredential("USERNAME", "PASSWORD");

                    WebResponse response = request.GetResponse();

                    HttpWebResponse webresponse = (HttpWebResponse)response;
                    if (webresponse.StatusCode == HttpStatusCode.OK)
                    {
                        tracing.Trace($" Resposne is correct i.e OK");

                    }

当我使用插件注册工具进行调试时,工具中断并退出。


跟踪错误:

 A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond


    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)

       at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
       --- End of inner exception stack trace ---
       at System.Net.HttpWebRequest.GetResponse()

无法正常工作的原因:

  1. 客户 (OnPrem) 使用代理连接到 Web。
  2. 当我 运行 服务器上的控制台应用程序时,它 运行 在我的登录上下文(CRM 之外),即登录服务器的用户。
  3. 但是,当我尝试从 CRM 调用网站时,它可能来自隔离模式 = None 或沙盒,在特定用户下运行的服务没有添加代理。
  4. 例如 运行 隔离模式下的插件 = NONE 即直接在 APPPool 服务 "crmtestappserv" 的上下文下没有代理甚至在相同的上下文下仅使用 Internet Explored除非添加了代理,否则用户无法打开 google.com。

解决问题的步骤: 在我们的插件代码中,当我们发出 HTTP 请求时,我们向请求添加代理。这解决了我们的问题。