|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Пытаюсь отправить RestAPI запрос с помощью (HttpWebResponse)_request.GetResponse(); и получаю ошибки доступа. Создаю два абсолютно одинаковых приложения . Console (Core 3.1) и Windows Froms (.NET 4.5). Т.е. консольном из функции main() и во втором из функции Form1_Load() запускается одна и та же функция. Но в первом случае работает идеально, а во втором - постоянно какие-то ошибки доступа на сайт. Сначала выдавалась "Аутентификация не пройдена из-за закрытия транспортного потока" Добавил строку Код: c# 1.
в самом начале - и авторизацию пройти удалось. Обе программы стали отрабатывать гладко. Но "авторизация" - это получение куки в сотню символов. Далее пытаюсь эту куки отправить снова на сайт вместе с запросом данных - "удаленный сервер возвратил ошибку 401 несанкционированный" . Но только в winforms(!) В консоле работает чётко(!!) Вот эта программулина: Код: 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.
Как так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 20:13 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
p.s. я по началу мне казалось, что проблема в SQL Server, в связи с чем была создана вот эта тема. Там мне помогли пройти этап авторизации. Но поскольку стало ясно, что стоит экспериментировать не с сервером, а просто в пределах двух приложений, то продолжение обсуждения выношу сюда, обе темы связываю между собой ссылками. Ведь это касается только C# и .NET, а не сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 20:14 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
У тебя домен запроса и домен куки не совпадают - может дело в этом? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 21:19 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Блин.. уточню Код: c# 1. 2. 3. 4. 5. 6.
В консоли работает, в WinForms нет) Я пытаюсь чем-нибудь просмотреть, как выглядит в итоге HTTP запрос, который отправляется на сервер, например, fiddler'ом, но он там сложности с установкой сертификата, никак не могу заставить всех ему верить. Но это другая тема, в общем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 21:56 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Nika gnome В консоли работает, в WinForms нет) Можно для эксперимента сделать консольное приложение на FW4.5 и проверить А вообще, может пользоваться HttpClient-ом, чтобы со всеми этими куками не возиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 22:43 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Nika gnome Я пытаюсь чем-нибудь просмотреть, как выглядит в итоге HTTP запрос, который отправляется на сервер, например, fiddler'ом, но он там сложности с установкой сертификата, никак не могу заставить всех ему верить. Но это другая тема, в общем. Там по-моему легко все это включается - он при запросе сам предлагает это настроить, если не настроено. Давно просто им не пользовался (для моих целей хватает DevTools браузера), и у меня его сейчас нет, а то бы посмотрел. Судя по "401 Unauthorized" сервер по какой-то причине либо вообще не получает куку, либо её не понимает, иначе было бы "403 Forbidden" (если сервер кошерный). Так что я бы изначально копал в этом направлении и как-нибудь оттрейсил что же там реально в HTTP передается. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 22:51 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Shocker.Pro Скорее всего дело не в Консоли или WF, а в Core и FW4.5 именно так и есть. Понять не могу, как это побороть. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 23:21 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Shocker.Pro А вообще, может пользоваться HttpClient-ом, чтобы со всеми этими куками не возиться? HttpClient сам-то тоже куку не отправит. Но, по любому, конечно, HttpWebRequest это легаси: https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest?view=net-5.0 Important We don't recommend that you use HttpWebRequest for new development. Instead, use the System.Net.Http.HttpClient class. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 05:21 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
В порядке мозгового штурма. Попробуй куку добавить не через контейнер, а прямо в Headers . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 05:26 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
fkthat HttpClient сам-то тоже куку не отправит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 09:48 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Попробуй WinForm на Core перенести. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 10:12 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
vb_sub Попробуй WinForm на Core перенести. ТС это нужно, чтобы запускать в качестве task в SSIS. А там только FW4.5. Собственно, вопрос - как заставить функциональность работать на FW4.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 11:02 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Shocker.Pro fkthat HttpClient сам-то тоже куку не отправит. Да, сейчас в инете полистал - и правдв сохраняет, если UseCookie = true (оно так по умолчанию). Я и не знал :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 12:03 |
|
Два приложения: консольное и winforms. Из одного отправляется restapi, из другого нет
|
|||
---|---|---|---|
#18+
Ferdipux ТС это нужно, чтобы запускать в качестве task в SSIS. А там только FW4.5. Собственно, вопрос - как заставить функциональность работать на FW4.5. Он, как раз, начиная с 4.5 и появился: https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 12:05 |
|
|
start [/forum/topic.php?fid=20&msg=40015890&tid=1398433]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 135ms |
0 / 0 |