powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
14 сообщений из 14, страница 1 из 1
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014594
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь обратиться к внешнему сайту. Обычный, типа ya.ru или kinopoisk.

Для этого мной написана функция, которая идеально отрабатывает, если запускать из консольного приложения.

Но если запилить её в качестве C# скрипта в SSIS, то выдаётся ошибка:
Аутентификация не пройдена из-за закрытия транспортного потока удаленной стороной

скрипт обычный совершенно, просто использую HttpWebRequest:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
HttpWebRequest _request = (HttpWebRequest)HttpWebRequest.Create(webRequestArgs.Url);

_request.Method = webRequestArgs.method;
if (webRequestArgs.proxy != "")
{
    _request.Proxy = new WebProxy(webRequestArgs.proxy, true);
    _request.Proxy.Credentials = new System.Net.NetworkCredential(webRequestArgs.TechAccUserName, webRequestArgs.TechAccUserPass);
}

if (webRequestArgs.contentType != "")
{
    _request.ContentType = webRequestArgs.contentType;
    _request.ContentLength = webRequestArgs.content.Length;
    StreamWriter _streamWriter = new StreamWriter(_request.GetRequestStream());
    _streamWriter.Write(webRequestArgs.content);
    _streamWriter.Close();

}
if (webRequestArgs.headers != null)
    _request.Headers = webRequestArgs.headers;
_request.CookieContainer = webRequestArgs.CookieContainer;
_request.ClientCertificates.Add(new X509Certificate()); //в и-нете советовали вставить, не помогло


if (webRequestArgs.username != "")
    _request.Credentials = new System.Net.NetworkCredential(webRequestArgs.username, webRequestArgs.pass);
HttpWebResponse _response = (HttpWebResponse)_request.GetResponse(); //здесь вываливается ошибка, что логично

...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014599
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome,

сеанс не прошел проверку, что-то с сертификатами, пользователями, прокси и тому подобное.
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014605
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть прокси. Да, указываю его.
С одними и теми же параметрами в консоли выполняется код, а из отладочной среды SSIS - не выполняется. Вот это я не понимаю. Почему на разных условиях?
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014633
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome
есть прокси. Да, указываю его.
С одними и теми же параметрами в консоли выполняется код, а из отладочной среды SSIS - не выполняется. Вот это я не понимаю. Почему на разных условиях?


проекты собраны с использованием одной и той же версии фреймворка?
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014652
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
проекты собраны с использованием одной и той же версии фреймворка?


Спасибо

направление мысли понятно. Странно, почему мне в голову не пришло.

В консольном приложении (где работает):
целевая среда: Core 3.1
AnyCPU
В SSIS
целевая среда: .NET framework 4.5
AnyCPU

И тут интересное.
  • В первом проекте я могу выбрать только один из нескольких Core (среда VS 2019), а
  • во втором - один из нескольких .NET framework (SSIS в Vs 2019, но для целевого сервера 2017).
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014658
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты знаешь, я точно такую же ошибку регулярно наблюдал при запуске своего веб-приложения под отладчиком при соединении к нему Хрома. Только она была в саом веб-приложении, а не на клиенте. Сейчас попробую воспроизвести, может быть по ней что-то и нагуглим.

UPD:
Да, вот оно:
[00:28:14 DBG] Failed to authenticate HTTPS connection.
System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014661
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И сразу же гугл выдает:

https://docs.microsoft.com/en-us/answers/questions/25701/stack-trace-systemioioexception-authentication-fai.html This error is generally related to the security protocol type. Usually either the application is allowing the wrong SSL protocol or your application's default security protocol type is being set too low. If your application is enforcing a newer TLS version while deployment pipelines (or anything else in your application) rely on an older TLS version, this can happen.

One solution I saw was to restrict the protocol only to the ones supported by the .NET framework and OS. The bad thing about this though is that when newer versions of TLS are released it requires you to also add those.


И вот тут еще про это тоже есть:
https://stackoverflow.com/questions/30664566/authentication-failed-because-remote-party-has-closed-the-transport-stream

В общем, тебе надо правильно протокол задать (TLS/SSL нужной версии). Через ServicePointManager - по ссылкам есть примеры
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014662
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот-вот, оно.

У меня кончился интернет. В смысле, всё, что было выгуглено, всё было испробовано:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
//Попытка Раз
_request.ClientCertificates.Add(new X509Certificate());

//Попытка Два
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11;

//Попытка Три
ServicePointManager
                .ServerCertificateValidationCallback +=
                (sender, cert, chain, sslPolicyErrors) => true;

Людям из интернетов что-то из этого помогало



Пробую что-то ещё.
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014663
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome
Пробую что-то ещё.

А ты просто перепробуй все протоколы по одному, по очереди.
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014665
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome,

Тебе, похоже, надо попытку 1 выкинуть, а попытки 2 и 3 объединить в одну. Номер 2 задает допустимые протоколы, а номер 3 проверку серверного сертификата. Номер 1 это просто установка клиентского сертификата и оно, наверное, не надо совсем - он же у тебя вообще какой-то пустой создаётся.
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014667
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даладно.

помогло.

спасиб тебе, мил человек!
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014669
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для тех, кто читает эту ветку.

Надо было строку
Код: c#
1.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11;


поместить в самое начало кода (функции) - до создания объектов HttpWebRequest

У меня не работало, т.к. я размещал все эти штуки непосредственно до вызова функции request.GetResponse

На этом вопрос закрыт. Спасибо))
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40014674
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome
поместить в самое начало кода (функции) - до создания объектов HttpWebRequest

Ну конечно же! Он ведь при создании свою конфигурацию оттуда берет :))
...
Рейтинг: 0 / 0
c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
    #40015722
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аААААА-А

авторизация пройдена, получены куки для дальнешего использования RestAPI, но снова раздвоение. В консоли норм, на сервере - нет.

Но поскольку мне показалось, что логичнее экспериментировать не между SSIS и консольным, а просто между WinForms приложением и консольным, продолжение темы выношу в этот топик с перекрёстными ссылками.

Всё описание задано в начале того топика.

Переносить эту тему туда вместе с описанием сервера, наверно, нелогично, поэтому просто связываю обе темы ссылками, а эту просто логично закрыть, о чём попрошу модератора.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / c#, SQL Server 2017. "Аутентификация не пройдена из-за закрытия транспортного потока"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]