Как указать данные прокси при обращении к динамическому веб-сервису CRM из консольного приложения - PullRequest
0 голосов
/ 12 июня 2019

Я новичок в веб-сервисах Dynamics CRM, я хочу использовать веб-сервис из консольного приложения, он работает с моего локального компьютера, но когда он переходит на рабочий сервер, он не работает, так как рабочий сервер требует настройки прокси-сервера перед вызовом веб-сервис. Может кто-нибудь объяснить, как использовать прокси перед вызовом веб-службы, это код, который работает на моей локальной машине

    private static void ConnectToDynamics()
    {
        string odataUrl = _dynamicsURL; 
        string appId = Id;
        string clientSecret = _secret;

        AuthenticationParameters authArg = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri(odataUrl)).Result;
        AuthenticationContext authCtx = new AuthenticationContext(authArg.Authority);
        AuthenticationResult authRes = authCtx.AcquireTokenAsync(authArg.Resource, new ClientCredential(appId, clientSecret)).Result;

        using (OrganizationWebProxyClient webProxyClient = new OrganizationWebProxyClient(new Uri(odataUrl), false))
        {
            webProxyClient.HeaderToken = authRes.AccessToken;
            using (OrganizationServiceContext ctx = new OrganizationServiceContext((IOrganizationService)webProxyClient))
            {

                var accounts = (from i in ctx.CreateQuery("entity") orderby i["name"] select i).Take(100);
                foreach (var account in accounts)
                    Console.WriteLine(account["name"]);
            }
        }
    }

1 Ответ

0 голосов
/ 12 июня 2019

Ниже приведен пример кода для HttpWebResponse

ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
                    WebProxy proxy = new WebProxy("proxy.xyz.local", 81) { UseDefaultCredentials = true };
                    WebRequest request = WebRequest.Create(globaConfigStatciValues.Url);
                    request.Proxy = proxy;
                    request.Method = "GET";
                    request.Credentials = new NetworkCredential(globaConfigStatciValues.userName,
                        globaConfigStatciValues.Password);


                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        try
                        {
                            if (response.StatusCode == HttpStatusCode.OK)
                            {
                                isConnectionSucessfull = true;
                                tracing.Trace($" Resposne is correct  {response.StatusCode}");
                                TracingMessage += $"Resposne is correct  {response.StatusCode} \n";
                            }
                            else
                            {
                                TracingMessage += $"Response from connecting to API {response.StatusCode} \n";
                                tracing.Trace($"Response from connecting to API {response.StatusCode}");
                            }

                        }
                        catch (Exception e)
                        {
                            TracingMessage += $" In catch block {e} \n";
                            tracing.Trace($" In catch block {e}");
                            createLogRecord( e.StackTrace,TracingMessage);
                           // throw new Exception($"There was an issue with connecting to API {e.Message}");
                        }
                    }
...