Имя: Пароль:
1C
1С v8
Повторное использование сеансов в http сервисах с ошибками
0 EarthsSoul
 
16.06.17
05:52
Добрый день

Пытаюсь применить следующую статью https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/
Для http сервиса в свойстве повторное использование сеансов поставил Использовать, переобуликовал http сервис.
В postman делаю запрос в котором добавил заголовок IBSession со значением start. В коде 1с ничего не правил, я так понимаю автоматически к ответу в 1с должен добавиться IBSession с указанием сеанаса. Я так понимаю в заголовке или в куках ответа должен быть ключ IBSession.

В ответ не приходит ключ IBSession.

Что делаю не так ?

Перезапустил сервис апач и на всякий случай перезапустил севрис 1с, и в файле default.vrd имеется запись reuseSessions="use" для моего http сервиса.
Дальнейшие запросы под разными пользователями с заголовком IBSession со значением start (или без заголовка) выдают ошибку
Платформа 1С:Предприятие 8.3 (8.3.10.2299)

{
    "#exception": "{http://v8.1c.ru/8.2/virtual-resource-system}Exception";,
    "exception": {
        "clsid": "580392e6-ba49-4280-ac67-fcd6f2180121",
        "reason": -3,
        "descr": "Ошибка работы сеанса\nОшибка при выполнении запроса POST к ресурсу /hs/api/user/login:",
        "#inner": "{http://v8.1c.ru/8.2/managed-application/seancecontextexception}SeanceContextException";,
        "inner": {
            "clsid": "60c686dc-798f-4d17-aadb-a90156a16eb8",
            "reason": 1,
            "descr": "Сеанс отсутствует или удален\nID=31e0f9f2-6007-4536-8d65-cf1f48ad890f, File=src\\ClusterDistribImpl.cpp(1169)"
        }
    }
}

То же самое поведение только для платформы 1С:Предприятие 8.3 (8.3.9.1818)
Только строка ошибки отличается немного

"Сеанс отсутствует или удален ClusterDistribImpl.cpp(1062)

(Перезагрузка всего сервера не спасает ошибка в базе остается на совсем, создаю просто новую базу в 1с сервер со ссылкой на базу существующую базу PostgresSQL, и все повторяется…)
1 EarthsSoul
 
16.06.17
06:01
У меня апач используется.

Я так понимаю в заголовке или в куках ответа должен быть ключ IBSession и он должен прикрепиться платформой, верно ?

У кого опыт есть в данном направлении ? Какой релиз платформы использовали ?
Может ли СУБД влиять?
Что делаю не так ?
2 EarthsSoul
 
16.06.17
08:47
Up
3 sFAQer
 
16.06.17
08:58
Время жизни сеанса сколько?
4 sFAQer
 
16.06.17
09:00
(1) Что значит он должен прикрепится платформой? В куках тебе прийдёт индентификатор сессии, потом с этими куками ты должен будешь последующие запросы делать...
5 EarthsSoul
 
16.06.17
09:38
(3) время жизни пока по умолчанию стандартное 20

(4) в коде 1с я пишу

Ответ = Новый HTTPСервисОтвет(code);    
    Ответ.Заголовки.Вставить("Content-type", "application/json;  charset=utf-8");
    
    Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

Откуда появится куки их же явно указывать не надо, это делает платформа ?
Я как то должен дополнительно указывать в коде необходимость возврата идентификатор сессии в куки   ?
Для тестирования postman подходит ?
6 sFAQer
 
16.06.17
10:07
(5) В ответе в куки тебе платформа положит, при последующих запросах к этому сервису их нужно будет подсовывать, это не на стороне 1С, это со стороны внешнего приложения.

А в Администрировании ИБ, сколько время жизни спящего сеанса?
7 Вафель
 
16.06.17
10:09
Тут вроде проблема с сервером 1С. сеансы дропаются. явно что рпхосты падают
8 Вафель
 
16.06.17
10:10
попробуй релиз посвежее
9 EarthsSoul
 
16.06.17
10:15
У меня ошибки проверенны на двух релизах
1С:Предприятие 8.3 (8.3.10.2299)
1С:Предприятие 8.3 (8.3.9.1818)
10 sFAQer
 
16.06.17
10:15
(5) А autouse чем не подошёл?
11 sFAQer
 
16.06.17
10:17
(9) Сервис повторного использования сеансов - На кластере жив?
12 EarthsSoul
 
16.06.17
10:18
(6)
Время засыпания пассивного сеанса 1200
Время завершения спящего сеанса 86400

Значения стандартные не менял еше...
13 sFAQer
 
16.06.17
10:19
(9) И да статьями с вундерленда лушче не пользоваться, т.к они пишутся во время реализации и без последующей правки, т.е могут быть не актульными.
http://its.1c.ru/db/v839doc#bookmark:dev:TI000001852
14 EarthsSoul
 
16.06.17
10:19
(10) попытка сделать с учетом последних технологий и есть вероятность что при реально эксплуатации это будет важно
15 EarthsSoul
 
16.06.17
10:21
(11) как это определяется ?
16 EarthsSoul
 
16.06.17
10:22
(13) спасибо конечно уже читал, по ссылке ничего нового. И конечно приму во внимание что лучше использовать ИТС
17 sFAQer
 
16.06.17
10:26
(15) Хороший вопрос) Ну если кластер из коробки то пофигу. А в базе есть активные сеансы?
18 sFAQer
 
16.06.17
10:29
(14) А зачем вообще сервис? Если не секрет.
19 EarthsSoul
 
16.06.17
10:30
(18) мобильное приложение кладовщика на базе Андроид, моблиьно приложение стремятся сделать без кэширования
20 sFAQer
 
16.06.17
10:31
(19) А конфа какая?
21 EarthsSoul
 
16.06.17
10:34
(19) УТ сильно дополненная 11.2.3.177
(17) протестировал и с активными сеансами, результат тот же
22 EarthsSoul
 
16.06.17
10:35
Тут обнаружил что версия клиента и сервера отличается. Сервер старый (1С:Предприятие 8.3 (8.3.9.1818)), через пару часов заменю сервер.

Не кажется проблема не в этом...
23 sFAQer
 
16.06.17
10:35
(21) В ут есть веб сервис для работы со складом, WMSMobileClientExchange как раз под мобильные приложения, может не изобретать велосипед?)
24 EarthsSoul
 
16.06.17
10:37
(23) там другие аналитики, другие принципы. Но решение из коробки для удобной работы в принципе не бывает, так как имеют универсальные подходы. Так что конечно точно не подойдёт
25 sFAQer
 
16.06.17
10:47
(24) А если не через приложение, а просто через браузер сервис дёрнуть?
26 sFAQer
 
16.06.17
10:49
(24) Ну на GET повесить какой нибудь метод ессесно, и просто бразуером открыть
27 EarthsSoul
 
16.06.17
10:54
(26) Не указан заголовок управления сеансами или куки с идентификатором сеанса.
28 EarthsSoul
 
16.06.17
10:54
Интересно
29 EarthsSoul
 
16.06.17
10:58
(26) в браузере возможно указать заголовок ?
30 EarthsSoul
 
16.06.17
11:00
(26) спасибо за идею, попробую из 1с http запросы слать
31 sFAQer
 
16.06.17
11:31
(29) Принципиально можно, но не без акробатики, лучше другой 1Ской =)
32 EarthsSoul
 
16.06.17
12:06
(31) Что ты имел в виду из другой 1с ???
я хотел из другой базы...
33 EarthsSoul
 
17.06.17
07:31
Доброе утро

Кажется проблема была не в 1c а в Postmane.
Написал http запрос в 1с к веб сервису в 1с и пришел идентификатор сесии В заголовке IBSession.  
Только теперь в понедельник будет задача как в 1с сделать запрос с идентификатором сессии, не совсем понятно как указать их в 1с программно коде...
34 EarthsSoul
 
17.06.17
07:34
*не совсем понятно как указать Куки в 1с программно коде...
35 EarthsSoul
 
17.06.17
07:39
Не понятно почему так ведет себя  Postman, может инструмент для тестирования веб сервисов корректно работающий с куками посоветуете ?
36 sFAQer
 
17.06.17
12:16
(35) Куки это всего лишь один из заголовков
37 sFAQer
 
17.06.17
12:19
(34)
Куки = новый структура();
Куки.Вставить("Кука1", ЗначениеКуки1);

Заголовки = Новый Структура();
Заголовки.Вставить("Cookie", Куки);

Соединение.ОтправитьДляОбработки(ЗАпрос, ФАйл, Заголовки);
38 EarthsSoul
 
18.06.17
04:11
(37) спасибо, буду пробовать в понедельник
39 EarthsSoul
 
19.06.17
06:19
Добрый день

Успешно достиг в 1с тех же проблем которые были в первом сообщении. Похоже все таки проблема не в postman , проблема работе платформы ...
40 EarthsSoul
 
19.06.17
06:25
(37) такой вариант не сработал

Таокео впечатление все таки правильно в 53 сообщении v8: v8: HTTP Запрос (ОтправитьДляОбработки())

Куки в 1с научился заполнять, вписываю туда всю строку
которую присылает обратно сервер 1с (там строка с тремя параметрами ibsession, Path, Version).

HTTPЗапрос.Заголовки.Вставить("Cookie", СтрокаСессии);

Но ошибка как уже сказано как в первом сообщении ...
41 sFAQer
 
19.06.17
06:31
(40) Окей это пост, а если попробовать другие методы, GET например?
Независимо от того, куда вы едете — это в гору и против ветра!