var request = WebRequest.Create(uri) as HttpWebRequest;
using (var response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
var stream = response?.GetResponseStream();
if (stream != null)
{
var reader = new StreamReader(stream);
return reader.ReadToEnd();
}
}
Authentication failed because the remote party has closed the transport stream.
Думал может чего не то с хидерами(может сайт решил проверять агентов например). Посмотрел как работает в Фиддлере, ТОЖЕ САМОЕ вставил в Фиддлере чтобы заэмулировать запрос и оно также там не работает.
Нашли проблему?
Возможно я не прав так как не особо разбираюсь в секьюрити, но это похоже на броблему с Transport Layer Security (TLS).
Кажется .net использует какой-то из TLS по умолчанию.
Может тут проблема?
Vaiyo A-O, A Home Va Ya Ray, Vaiyo A-Rah, Jerhume Brunnen G!
Если код не менялся ни там, ни тут - то стоит посмотреть на сертификаты, может что-то заэкспайрилось или не поддерживается больше и теперь по умолчанию отваливается.
Last edited by Boriskin on 11 Jan 2018 19:21, edited 2 times in total.
katit wrote: ↑11 Jan 2018 18:58
Самое интереснот что Фиддлер падает также как и моя прога, у них там тоже простяцкий код на .NET видимо
Эта бодяга, похоже, началась по мере перехода на новые SHA-256 SSL сертификаты.
У фидлера, скорее всего, старый Framework крутится. Мой код выше патчит проблему как раз для более старого фреймворка (4.0 и старше).
В 4.6 уже TLS 1.2 прописан, так что одной такой строки д.б. достаточно:
katit wrote: ↑11 Jan 2018 18:58
Самое интереснот что Фиддлер падает также как и моя прога, у них там тоже простяцкий код на .NET видимо
Эта бодяга, похоже, началась по мере перехода на новые SHA-256 SSL сертификаты.
У фидлера, скорее всего, старый Framework крутится. Мой код выше патчит проблему как раз для более старого фреймворка (4.0 и старше).
В 4.6 уже TLS 1.2 прописан, так что одной такой строки д.б. достаточно:
Проблема только в том что это будет настройка всего AppDomain
ВРОДЕ как вот этот конфиг вверху у народа работает (и оно работает в конкретном случае). Но я сегодня работал над "апгрейдом" одного из веб сервисов который требует тлс12. У меня в одном сервице интеграции с десятками провайдеров. Вот и пойми чего сейчас сломается Нет возможность контролировать на уровне одного клиента/запроса.
Проблема только в том что это будет настройка всего AppDomain
ВРОДЕ как вот этот конфиг вверху у народа работает (и оно работает в конкретном случае). Но я сегодня работал над "апгрейдом" одного из веб сервисов который требует тлс12. У меня в одном сервице интеграции с десятками провайдеров. Вот и пойми чего сейчас сломается Нет возможность контролировать на уровне одного клиента/запроса.
Да, наверное, лучше все протоколы сразу подключить. Ну, заработало и слава богу.
Если опять сломается, заявимся с лопатами и вилами починим коллективными усилиями
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
Проблема только в том что это будет настройка всего AppDomain
ВРОДЕ как вот этот конфиг вверху у народа работает (и оно работает в конкретном случае). Но я сегодня работал над "апгрейдом" одного из веб сервисов который требует тлс12. У меня в одном сервице интеграции с десятками провайдеров. Вот и пойми чего сейчас сломается Нет возможность контролировать на уровне одного клиента/запроса.
Да, наверное, лучше все протоколы сразу подключить. Ну, заработало и слава богу.
Если опять сломается, заявимся с лопатами и вилами починим коллективными усилиями
Так проблме "ширше". Настройка покрывает весь AppDomain. Починив это, оно может поламать что-то другое. А контролировать on "case by case" basis низзя Только делить AppDomains..
katit wrote: ↑06 Feb 2018 01:23
Так проблме "ширше". Настройка покрывает весь AppDomain. Починив это, оно может поламать что-то другое. А контролировать on "case by case" basis низзя Только делить AppDomains..
Да вроде всё должно работать. Мы же не сервер пишем, где можно случайно поломать весь application pool, а клиента.
Опять же, согласно концепции фреймворка, в одном приложении может быть несколько AppDomains. Можно попробовать локализовать в отдельный app thread.
Вот тут пишут, как искусственно отделить appdomain, хотя мне кажется, что как-то сложновато. В качестве прототипа я бы сначала просто сделал отдельный тред, а если не пойдёт, то можно вынести в отдельный appdomain, или даже в другое приложение.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
katit wrote: ↑06 Feb 2018 01:23
Так проблме "ширше". Настройка покрывает весь AppDomain. Починив это, оно может поламать что-то другое. А контролировать on "case by case" basis низзя Только делить AppDomains..
Да вроде всё должно работать. Мы же не сервер пишем, где можно случайно поломать весь application pool, а клиента.
Опять же, согласно концепции фреймворка, в одном приложении может быть несколько AppDomains. Можно попробовать локализовать в отдельный app thread.
Вот тут пишут, как искусственно отделить appdomain, хотя мне кажется, что как-то сложновато. В качестве прототипа я бы сначала просто сделал отдельный тред, а если не пойдёт, то можно вынести в отдельный appdomain, или даже в другое приложение.
Да, в данном случае это не проблема. Но я сегодня правил в другом месте, а там монстр-сервис который аггрегирует данные от тучи провайдеров. И все в MEF Imports/etc. Там разделять на AppDomains будет не так тривиально. Но ладно, посмотрим, будем по мере появления проблемы решать.