Please wait, loading...

 

Dynamics CRM V9 / D365 connection Error Console or Custom Web Application

January 4, 20187
Last Night I Created a new Organisation and Connected it with console app an then I faced a strange issue in CRM v9 while connecting to Org Service with D365 through web API. It was perfectly working before that. If any one faces the below issue then try the solution given below.

Issue : Connection to CRM V9 / D365 from console application or Custom Web application failed with exception

Error Observed:

Message : “One or more errors occurred.” 
Source : “mscorlib”




ROOT CAUSE:
Its all because of the latest update in the Microsoft TSL(Transport Security Layer) Protocol in SDK assemblies..Microsoft allowed the TSL connection 1.0  and 1.1 for the browsers or client to connect the CRM org.Now Microsoft will support only TSL 1.2 or above going forward(Reference) . If you are connecting your org with the old version of plugin registration tool , then you may face this issue
SOLUTION:
Include the below reference to your project(to global config file the line before where your client credentials is configured) and change the .Net framework to 4.6.1 and rebuild 
“ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12”

Code Snippet :

//Create an HTTP client to send a request message to the CRM Web service.
                using (HttpClient httpClient = new HttpClient(messageHandler))
                {
                    //Specify the Web API address of the service and the period of time each request
                    // has to execute.
                    httpClient.BaseAddress = new Uri(serviceUrl);
                    httpClient.Timeout = new TimeSpan(0, 2, 0);  //2 minutes

                 
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

                    //Send the WhoAmI request to the Web API using a GET request.
                    var response = httpClient.GetAsync(“api/data/v9.0/WhoAmI”,
                            HttpCompletionOption.ResponseHeadersRead).Result;

                    if (response.IsSuccessStatusCode)
                    {
                        //Get the response content and parse it.
                        JObject body = JObject.Parse(response.Content.ReadAsStringAsync().Result);
                        Guid userId = (Guid)body[“UserId”];
                        Console.WriteLine(“Your system user ID is: {0}”, userId);
                    }
                    else
                    {
                        Console.WriteLine(“The request failed with a status of ‘{0}'”,
                               response.ReasonPhrase);
                    }
                }

Happy Coding 😊

SOURCE : https://community.dynamics.com

7 comments

  • Ankit Srivastava

    January 4, 2018 at 12:59 pm

    Thanks Shashank for the great post, it will really help :).

  • Nishant Rana

    January 4, 2018 at 1:03 pm

    Awesome Info Shashank 🙂

  • Prathmesh

    January 4, 2018 at 11:24 pm

    Thanks a lot!

  • Vishal Kumar

    January 8, 2018 at 8:58 pm

    great information shashank…! thanks

  • Laszlo Penzes

    January 31, 2018 at 1:30 pm

    Many thanks, you saved my day!

Comments are closed.

https://i0.wp.com/microsoftdynamics.in/wp-content/uploads/2020/04/Microsoftdynamics365.png?fit=640%2C651&ssl=1
Microsoft Dynamics Community Profile

Learn more