2016-11-29 11 views
2

Я пытаюсь запустить веб-тест Visual Studio 2013 на моем локальном компьютере. Это тест, который я успешно выполнил (последний раз около 2 месяцев назад). Первым шагом веб-теста является запрос GET на страницу входа в систему. Это выглядит следующим образом:Ошибка веб-поиска Visual Studio 2013 Ошибка: существующее соединение было принудительно закрыто удаленным узлом

GET https://example.com/Login.aspx

Когда я печатаю этот адрес в веб-браузере он преуспевает. Кроме того, я могу успешно записать веб-тест, где я просто ориентироваться на эту страницу и войти в Но при попытке повторно запустить WebTest, что я только что записал я получаю этот ответ на запрос GET:.

Request failed: An existing connection was forcibly closed by the remote host 

Ничто не регистрируется IIS на example.com (IIS не регистрирует запрос GET). Но, когда я вручную вхожу в систему или когда я регистрирую веб-тест, IIS правильно регистрирует запрос GET.

Нет сообщений, зарегистрированных в средстве просмотра событий на example.com или на моем локальном хосте.

Любые предложения по отладке этой проблемы очень ценятся.

+1

Столкнувшись с той же проблемой. Вы нашли решение? – dimaaan

+1

Я не уверен, что правильно помню, но я считаю, что проблема заключалась в том, что наш ИТ-отдел перенял наши тестовые агенты в другой домен внутри, что нарушило веб-тест (поскольку он использует агентов), но не нарушил запись в Интернете проверить или ударить страницу вручную. –

ответ

1

Для меня проблемой было рукопожатие TLS. Решено путем добавления плагина к веб-тесту.

Think является оригинальный вопрос, который мне помогает: источник https://social.msdn.microsoft.com/Forums/vstudio/en-US/bc3ebf23-575d-4e54-bd6b-a1ed87fe5213/web-performance-test-is-not-working-with-tls12-enabled?forum=vstest

Плагин:

using System; 
using System.ComponentModel; 
using System.Net; 
using System.Net.Security; 
using System.Security.Cryptography.X509Certificates; 
using Microsoft.VisualStudio.TestTools.WebTesting; 

[Description("This plugin will force the underlying System.Net ServicePointManager to negotiate downlevel SSLv3 instead of TLS. WARNING: The servers X509 Certificate will be ignored as part of this process, so verify that you are testing the correct system.")] 
public class TLSPlugin : 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); 

     //For TLS 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

     //For SSL 
     //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 
     //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() + " 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; 
    } 
}