Archive

Archive for November, 2019

Visual studio load test giving error- Request failed: The request was aborted: Could not create SSL/TLS secure channel

November 29, 2019 Leave a comment

Recently I ran the load tests in visual studio, I got errors “Request failed: The request was aborted: Could not create SSL/TLS secure channel”. Those load tests are working fine previously but suddenly stopped working. After investigation I found that recently our production server had some changes in TLS protocol support and now TLS 1.2 support added.

Request failed: The request was aborted: Could not create SSL/TLS secure channel.

Request failed: The request was aborted: Could not create SSL/TLS secure channel.

So, the cause found is recent change done on server but now finding the solution to resolve this issue and run the load test in visual studio.

Solutions:

We need to create Web Performance Test Plug-In to resolve this issue.

  1. Open a Web performance and load test project that contains a Web load test.
  2. In Solution Explorer, right-click on the solution and select Add and then choose New Project.The Add New Project dialog box is displayed.
  3. Under Installed Templates, select Visual C#.
  4. In the list of templates, select Class Library.
  5. In the Name text box, type a name for your class. Choose OK.
    Visual studio add new class library project
    Visual studio add new class library project
  6. The new class library project is added to Solution Explorer and the new class appears in the Code Editor.
  7. In Solution Explorer, right-click the References folder in the new class library and select Add Reference.
  8. The Add Reference dialog box is displayed.
  9. Choose the .NET tab, scroll down, and select Microsoft.VisualStudio.QualityTools.WebTestFramework. Choose OK.
  10. The reference to Microsoft.VisualStudio.QualityTools.WebTestFramework is added to the Reference folder in Solution Explorer.
    Visual studio add reference
    Visual studio add reference
  11. In Solution Explorer, right-click on the top node of the Web performance and load test project that contains the load test to which you want to add the Web performance test plug-in and select Add Reference.
  12. The Add Reference dialog box is displayed. Choose the Projects tab and select the Class Library Project. Choose OK.
    Visual studio add plugin project reference
    Visual studio add plugin project reference
  13. In the Code Editor, write the code of your plug-in. First, create a new public class that derives from WebTestPlugin.
  14. Implement code inside one or more of the event handlers.
  15.          public class Tls12ForcedPlugin : WebTestPlugin
        {
            [Description("Enable or Disable the plugin functionality")]
            [DefaultValue(true)]
            public bool Enabled { get; set; }
    
            public override void PreWebTest(object sender, PreWebTestEventArgs e)
            {
                base.PreWebTest(sender, e);
                
                // We're using SSL2 here and not TLS. Without this line, nothing works.
                ServicePointManager.SecurityProtocol = (SecurityProtocolType)(0xc00);// SecurityProtocolType.Ssl2;
    
                //we wire up the callback so we can override  behavior and force it to accept the cert
                ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidationCB;
    
                //let them know we made changes to the service point manager
                e.WebTest.AddCommentToResult(this.ToString() + " PP has made the following modification-> ServicePointManager.SecurityProtocol set to use SSLv3 in WebTest Plugin.");
            }
            public static bool RemoteCertificateValidationCB(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            {
                //If it is really important, validate the certificate issuer here.
                //this will accept any certificate
                return true;
            }
    }
            
  16. If you are using Framework 4.0 then you may get error SecurityProtocolType.Ssl2 not found.For other Framework –

    SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12

    For Framework 4.0

    (SecurityProtocolType)(0xc0 | 0x300 | 0xc00)

  17. After you have written the code, build the new project.
  18. Open a Web performance test. To add the Web performance test plug-in, choose Add Web Test Plug-in on the toolbar.
  19. The Add Web Test Plug-in dialog box is displayed. Under Select a plug-in, select your Web performance test plug-in class.
  20. Visual studio plugin project displayed

    Visual studio plugin project displayed

  21. In the Properties for selected plug-in pane, set the initial values for the plug-in to use at run time. Choose OK.
    Visual studio error resolved
    Visual studio error resolved