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()
无法正常工作的原因:
- 客户 (OnPrem) 使用代理连接到 Web。
- 当我 运行 服务器上的控制台应用程序时,它 运行 在我的登录上下文(CRM 之外),即登录服务器的用户。
- 但是,当我尝试从 CRM 调用网站时,它可能来自隔离模式 = None 或沙盒,在特定用户下运行的服务没有添加代理。
- 例如 运行 隔离模式下的插件 = NONE 即直接在 APPPool 服务 "crmtestappserv" 的上下文下没有代理甚至在相同的上下文下仅使用 Internet Explored除非添加了代理,否则用户无法打开 google.com。
解决问题的步骤: 在我们的插件代码中,当我们发出 HTTP 请求时,我们向请求添加代理。这解决了我们的问题。
我正在尝试从 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()
无法正常工作的原因:
- 客户 (OnPrem) 使用代理连接到 Web。
- 当我 运行 服务器上的控制台应用程序时,它 运行 在我的登录上下文(CRM 之外),即登录服务器的用户。
- 但是,当我尝试从 CRM 调用网站时,它可能来自隔离模式 = None 或沙盒,在特定用户下运行的服务没有添加代理。
- 例如 运行 隔离模式下的插件 = NONE 即直接在 APPPool 服务 "crmtestappserv" 的上下文下没有代理甚至在相同的上下文下仅使用 Internet Explored除非添加了代理,否则用户无法打开 google.com。
解决问题的步骤: 在我们的插件代码中,当我们发出 HTTP 请求时,我们向请求添加代理。这解决了我们的问题。