Вызов внешнего сервиса WCF (с использованием сгенерированного клиента) из изолированного плагина CRM OnPremise не выполняется - PullRequest
0 голосов
/ 07 февраля 2020

Как вызвать HTTPS WCF веб-сервис в плагине, сборка плагина регистрируется в режиме песочницы. Я получаю исключение System.Security.SecurityException. Может ли кто-нибудь указать путь ко всем веб-службам https? Мой код ниже:

BasicHttpBinding myBinding = new BasicHttpBinding();
myBinding.MaxReceivedMessageSize = Int32.MaxValue;
myBinding.Name = “basicHttpBinding”;
if (EndPoint.ToLower().Contains(“https://”))
{
//Throwing exception here – System.Security.SecurityException exception,
ServicePointManager.ServerCertificateValidationCallback += (sendr, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072 | (SecurityProtocolType)192;
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
}
else
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
myBinding.Security.Mode = BasicHttpSecurityMode.None;
}
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
myBinding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
myBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
EndpointAddress endPointAddress = new EndpointAddress(EndPoint);
WebIALClient myClient = new WebIALClient(myBinding, endPointAddress)

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Можете ли вы попробовать и также включить: using System.Web.Http.Cors;

  [EnableCors(origins: "*", headers: "*", methods: "*")]

  [Route("api/ConvertUpload/{env}/{id}")]

  public string Get(string env, string id)
  {

      return "hi";
  }

Возможно, вам придется использовать WebClient, как упомянул @Arun.

0 голосов
/ 09 февраля 2020

Поскольку вы находитесь в локальной версии, вы можете зарегистрировать сборку плагина в режиме без песочницы. ie Isolation mode = none для преодоления таких ошибок.

Если вы хотите использовать режим песочницы, попробуйте использовать класс WebClient для вызова вызова службы WCF. Читать дальше

using (WebClient client = new WebClient())
                {
                    byte[] responseBytes = client.DownloadData(webAddress);
                    string response = Encoding.UTF8.GetString(responseBytes);
                    tracingService.Trace(response);

                    // For demonstration purposes, throw an exception so that the response
                    // is shown in the trace dialog of the Microsoft Dynamics CRM user interface.
                    throw new InvalidPluginExecutionException("WebClientPlugin completed successfully.");
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...