Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
Добрый день,

Пытаюсь воссоздать код из этого линка (первый пример):
[url=]https://bornsql.ca/blog/using-the-xero-oauth-2-0-api-from-a-net-core-console-application/[/url]

        public async Task<XeroOAuth2Token> RefreshToken(string clientId, Xero.NetStandard.OAuth2.Config.XeroConfiguration config)
        {
            var handler = new SocketsHttpHandler();
            var httpClient = new HttpClient(handler, false);
            //var xeroToken = TokenUtilities.GetStoredToken(); replace with DB read 
            var xeroToken = GetXeroToken(clientId);
            //var utcTimeNow = DateTime.UtcNow;
            var client = new XeroClient(config, httpClient);
            xeroToken = (XeroOAuth2Token)await client.RefreshAccessTokenAsync(xeroToken);
           // TokenUtilities.StoreToken(xeroToken); replace with DB store
            return xeroToken;
        }


Выходит ошибка:
"Error CS0246 The type or namespace name 'SocketsHttpHandler' could not be found (are you missing a using directive or an assembly reference?)"


Этот пример заточен на .Net Core 3.1.

Попытался создать отдельный проект на .Net Core 3.1 и поместить туда код выше. При ссылке на этот проект выходит другая ошибка:
"Error Project '..\myproject2.csproj' targets 'netcoreapp3.1'. It cannot be referenced by a project that targets '.NETFramework,Version=v4.7.2'. myproject1"


Как сделать так, чтобы 'SocketsHttpHandler' работал на .NETFramework 4.7.2?

Спасибо.
24 ноя 21, 08:02    [22400029]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4440
Читаем еще раз:

автор
The type or namespace name 'SocketsHttpHandler' could not be found (are you missing a using directive or an assembly reference?)"


и исправляем
24 ноя 21, 11:39    [22400109]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
Ролг Хупин
Читаем еще раз:

автор
The type or namespace name 'SocketsHttpHandler' could not be found (are you missing a using directive or an assembly reference?)"


и исправляем


Хороший совет. Вот только как это исправить на .Net Framework 4.7.2? На .Net Core 3.1 все прекрасно работает.
24 ноя 21, 22:38    [22400436]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
vb_sub
Member

Откуда:
Сообщений: 980
Roust_m,
SocketsHttpHandler отсутствует в NetFramework.
25 ноя 21, 09:56    [22400510]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
vb_sub
Roust_m,
SocketsHttpHandler отсутствует в NetFramework.


А есть эквивалент? Или может nuget какой-нибудь подгрузить?

Идея заключается в том, чтобы создать http клиент в консольном приложении и получить токен:
"you now need an HttpClient to call the API to refresh tokens using the RefreshAccessTokenAsync() method."

Идиотизм, конечно, но по другому эта API не работает.
25 ноя 21, 10:18    [22400532]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4440
Roust_m
vb_sub
Roust_m,
SocketsHttpHandler отсутствует в NetFramework.


А есть эквивалент? Или может nuget какой-нибудь подгрузить?

Идея заключается в том, чтобы создать http клиент в консольном приложении и получить токен:
"you now need an HttpClient to call the API to refresh tokens using the RefreshAccessTokenAsync() method."

Идиотизм, конечно, но по другому эта API не работает.


А так:
NET Framework app+NET Standard project (+SocketsHttpHandler ) ?
25 ноя 21, 11:25    [22400583]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
vb_sub
Member

Откуда:
Сообщений: 980
Roust_m
vb_sub
Roust_m,
SocketsHttpHandler отсутствует в NetFramework.


А есть эквивалент? Или может nuget какой-нибудь подгрузить?

Идея заключается в том, чтобы создать http клиент в консольном приложении и получить токен:
"you now need an HttpClient to call the API to refresh tokens using the RefreshAccessTokenAsync() method."

Идиотизм, конечно, но по другому эта API не работает.

Вроде либа RestSharp довольно популярна, но сам не пользовался.

Сообщение было отредактировано: 25 ноя 21, 11:34
25 ноя 21, 11:32    [22400587]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
vb_sub
Member

Откуда:
Сообщений: 980
видос
Чекни, там скорее всего найдешь решение
25 ноя 21, 11:57    [22400607]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
Ролг Хупин
Roust_m
пропущено...


А есть эквивалент? Или может nuget какой-нибудь подгрузить?

Идея заключается в том, чтобы создать http клиент в консольном приложении и получить токен:
"you now need an HttpClient to call the API to refresh tokens using the RefreshAccessTokenAsync() method."

Идиотизм, конечно, но по другому эта API не работает.


А так:
NET Framework app+NET Standard project (+SocketsHttpHandler ) ?


Такой опции у меня нет. А как .Net Standard добавить в Visual Studio? Пытался гуглить и загрузить его, не нашел. Попробовал создать проект на .Net 5.0, полезли десятки ошибок в существующем коде.
26 ноя 21, 03:18    [22401031]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4440
Roust_m
Ролг Хупин
пропущено...


А так:
NET Framework app+NET Standard project (+SocketsHttpHandler ) ?


Такой опции у меня нет. А как .Net Standard добавить в Visual Studio? Пытался гуглить и загрузить его, не нашел. Попробовал создать проект на .Net 5.0, полезли десятки ошибок в существующем коде.


Это кто писал?
"Идея заключается в том, чтобы создать http клиент в консольном приложении " ?

К приложению добавить новый прожект типа NET Standard
26 ноя 21, 12:24    [22401193]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
Ролг Хупин
Roust_m
пропущено...


Такой опции у меня нет. А как .Net Standard добавить в Visual Studio? Пытался гуглить и загрузить его, не нашел. Попробовал создать проект на .Net 5.0, полезли десятки ошибок в существующем коде.


Это кто писал?
"Идея заключается в том, чтобы создать http клиент в консольном приложении " ?

К приложению добавить новый прожект типа NET Standard


Вот по этой ссылке написали:
https://bornsql.ca/blog/using-the-xero-oauth-2-0-api-from-a-net-core-console-application/
Идея в том, что вендор (Xero) поменял способ аутентификации на OAuth2. Причем сделал это крайне криво, видимо полагая, что консольными приложениями щас больше не пользуются. Поэтому обновить токен можно только создав http клиент.

Нет у меня такой опции (NET Standard).
26 ноя 21, 14:32    [22401303]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
Пока сделал так:
Install-Package StandardSocketsHttpHandler -Version 2.2.0.3
В самом коде:
using System.Net.Http;
var handler = new StandardSocketsHttpHandler();


Компилируется без ошибок, полностью проверить не могу, ибо застрял на другом куске программы.
27 ноя 21, 14:11    [22401799]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4440
Roust_m
Пока сделал так:
Install-Package StandardSocketsHttpHandler -Version 2.2.0.3
В самом коде:
using System.Net.Http;
var handler = new StandardSocketsHttpHandler();


Компилируется без ошибок, полностью проверить не могу, ибо застрял на другом куске программы.



Как-то странно, зачем було мутить всю эту тему? Вы могли бы это сделать сразу же.
27 ноя 21, 15:06    [22401820]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6254
Ролг Хупин
Как-то странно, зачем було мутить всю эту тему? Вы могли бы это сделать сразу же.

В составе пакета, скорее всего, уже была версия для .Net framework, просто сначала она осталась незамеченной.
27 ноя 21, 16:05    [22401845]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1221
Ролг Хупин
Roust_m
Пока сделал так:
Install-Package StandardSocketsHttpHandler -Version 2.2.0.3
В самом коде:
using System.Net.Http;
var handler = new StandardSocketsHttpHandler();


Компилируется без ошибок, полностью проверить не могу, ибо застрял на другом куске программы.



Как-то странно, зачем було мутить всю эту тему? Вы могли бы это сделать сразу же.


На момент открытия темы, я не знал про такое решение.
28 ноя 21, 14:18    [22402142]     Ответить | Цитировать Сообщить модератору
 Re: Проекты с разными версиями Дот Нета  [new]
fkthat
Member

Откуда:
Сообщений: 5174
Roust_m
Как сделать так, чтобы 'SocketsHttpHandler' работал на .NETFramework 4.7.2?

Никак. Попробуй заменить на HttpClientHandler или WebRequestHandler.
28 ноя 21, 15:04    [22402161]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить