Ошибка «Основное соединение было закрыто: непредвиденная ошибка при отправке» на удаленном сервере - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть довольно простой код, который работал до недавнего времени, пока сайт, на который он отправляет данные, не переключился на https.В режиме отладки (на локальном хосте) я использую прокси с доступом по доменному логину и паролю.В режиме выпуска я использую другой прокси, который не требует учетных данных.Я пытался добавить

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

, и это не сработало!Скорее только половина.Запрос отправляется, если учетные данные отправляются как в режиме отладки, но отваливаются за исключением «Основное соединение было закрыто: если вы используете DefaultCredentials. Какой совет вы можете мне дать?

#if DEBUG //OK
        NetworkCredential proxyCreds = new NetworkCredential(
            "login",
            "password"
        );

        WebProxy proxy = new WebProxy("http://bproxy.com:3131", false)
        {
            UseDefaultCredentials = false,
            Credentials = proxyCreds,
        };

        HttpClient client = null;
        HttpClientHandler httpClientHandler = new HttpClientHandler()
        {
            Proxy = proxy,
            PreAuthenticate = true,
            UseDefaultCredentials = false,
        };

        client = new HttpClient(httpClientHandler);
#else   // NOT OK
        HttpClientHandler httpClientHandler = new HttpClientHandler()
        {
            Proxy = new WebProxy(new Uri("http://bproxy.com:3128"))
        };

        HttpClient client = new HttpClient(httpClientHandler);
#endif

        client.BaseAddress = new Uri("http://url.com");
        ServicePointManager.SecurityProtocol = 
            SecurityProtocolType.Tls12 | 
            SecurityProtocolType.Tls11 | 
            SecurityProtocolType.Tls;

        var values = new Dictionary<string, string>
        {
           {"_method", "POST" },
           { "data[User][email]", user },
           { "data[User][password]", pass }
        };

        var content = new FormUrlEncodedContent(values);

        var responseString = Post(client, "/", content);

1 Ответ

0 голосов
/ 19 февраля 2019

Я думаю, вам нужно внести в белый список те прокси-адреса, которые вы используете в сети, где вы их размещаете.Внесите в белый список IP-адрес или адрес прокси-сервера, включая порт

. Общайтесь с сетевой командой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...