Имя: Пароль:
1C
1С v8
Web-сервис. Ошибка 400
0 1CNachalo
 
12.12.20
21:21
Есть веб-сервис и общая команда. В общей команде код:

Попытка
        ВСОпределение = Новый WSОпределения("http://192.168.___.__/t10/ws/OD.1cws?wsdl";;); //#1
        ВСервер = ВСОпределение.Сервисы.Получить("OD","OD");
        ВТочкаВхода = ВСервер.ТочкиПодключения.Получить("ODSoap");
        ВТОперация = ВТочкаВхода.Интерфейс.Операции.Получить("Sinhron");
        Данные = Новый ХранилищеЗначения("Некие данные",Новый СжатиеДанных(9));
        ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВТОперация.Параметры.Получить("Dan").Тип,Данные);
        ВСПрокси = Новый WSПрокси(ВСОпределение,"OD","OD","ODSoap");
        Ответ = ВСПрокси.Синхронизация(ДанныеXDTO);    
        Возврат Истина;    
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат Ложь;    
    КонецПопытки;

При нажатии на кнопку ВыполнитьСинхронизацию сначала было все хорошо, т.е. выполнение шло по ветке Попытка, до Ответ доходило точно, в ветку Исключение выполнение не переходило.

Но затем, не понятно почему, при очередном тестировании кнопки с общей командой, сразу после прохождения строки кода #1 выполнение стало переходить к Исключению и в
результате — ошибка (указывает именно на эту строку кода (выше) и код ошибки 400).

(1с и Apache2.2 переустановил -- не помогло)

При этом базу в браузере вижу, xml-файл тоже.
————————————
Примерно в момент возникновения этой ошибки началось следующее: даже если база нигде не открыта (ни в браузере, ни на ПК), выдается сообщение: “Достигнуто предельное количество подключений к ИБ”. Чтобы выходить из этой ситуации приходится часто чистить кэш и останавливать сервер.

Что это может быть? Как исправить?
1 SuperMario
 
12.12.20
21:43
Старо как Мир - это код ответа HTTP, который означает, что сервер не смог обработать запрос)

Залезьте каким-нить SOAPUI по ссылке "http://192.168.___.__/t10/ws/OD.1cws?wsdl"; (или вставьте в браузер)

Что в ответ?
2 1CNachalo
 
12.12.20
21:54
В ответ в браузере xml-схема.
3 SuperMario
 
12.12.20
22:35
(2) сори. Не дочитал полностью (0)
4 1CNachalo
 
13.12.20
13:14
Вбил неверный адрес http://192.168.___.__/t10/ws/OD?wsdl
Т.е. не OD.1cws?wsd, а OD?wsd -- всё равно дает xml-схему. Это как вообще? Может ошибка связана как-то с этим?
5 acht
 
13.12.20
14:08
Приведи полный текст ошибки, которое выбрасывает исключение.
Вангую, что у тебя учебная платформа и в пуле застревает твой же предыдущий сеанс.
6 1CNachalo
 
13.12.20
16:02
(5) Платформа учебная. Да, есть ощущение, что действительно застревает предыдущий сеанс. Но что с этим делать?
----------
{ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(15)}:Ошибка при вызове конструктора (WSОпределения): при создании описания сервиса произошла ошибка URL: http://192.168.___.__/t10/ws/OD.1cws?wsdl Код ответа сервера: 400
7 acht
 
13.12.20
20:28
(6) В файле default.vrd установить размер пула в 1 и время жизни соединения в пула во что нибудь минимальное.
8 SuperMario
 
13.12.20
22:31
Припоминаю, у меня подобное было  когда-то с базовой БП 3.0.
Она локально/однопользовательская. Начались проблемы с работой через WEB, когда там пользователь работает.

Был уверен, что WEB/HTTP сервисы не  занимают клиентскую лицензию. Но практика показала обратное.

У учебной версии то же самое: "количество одновременных сеансов работы с информационной базой ограничено одним сеансом".

Случайно никто в это время  не работает в  базе (http://192.168.___.__/t10) когда соединение поднимается?

Вот что пишет:

https://forum.infostart.ru/forum9/topic128169/
9 seevkik
 
14.12.20
04:05
(8) Они занимают лицензию во время выполнения запроса
10 1CNachalo
 
14.12.20
08:36
(7) Т.е в файле изначально 2 таких фрагмента:
<>
poolSize="10"
poolTimeout="5"/>
</>
Исправляю в обоих на
<>
poolSize="1"
poolTimeout="1"/>
</>
Пока дает ту же ошибку.
11 1CNachalo
 
14.12.20
08:38
(8) Случайно никто в это время  не работает в  базе (http://192.168.___.__/t10) когда соединение поднимается?
------------------------------
Не, я ж тут вообще один, сижу, тренируюсь, застрял.
12 1CNachalo
 
14.12.20
08:41
(9) Что именно занимает лицензию?
И как это исправить?
Как-то работало до определенного момента, переходило дальше по функции, ошибку не давало. Потом резко -- ошибка 400.
13 acht
 
14.12.20
08:45
(10) > изначально 2 таких фрагмента
Там больше двух. В standardOdata, в ws, в httpServices и в pool. В последнем оно size и maxAge, а не то, что ты поставил
14 1CNachalo
 
14.12.20
12:56
(13) Не нахожу. У меня вот так:

<?xml version="1.0" encoding="UTF-8"?>   //1
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"; //2
        xmlns:xs="http://www.w3.org/2001/XMLSchema"//3
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"//4
        base="/t10"//5
        ib="File=&quot;D:\1C\тест\кр6&quot;;">//6
    <debug enable="true"//7
            protocol="http"//8
            url="192.168.___._"/>//9
    <httpServices publishByDefault="false"/>//10
    <standardOdata enable="true"//11
            reuseSessions="autouse"//12
            sessionMaxAge="1"//13 было 20
            poolSize="1"     //14 было 10
            poolTimeout="1"/>//15 было 5
    <analytics enable="true"/>//16
    <ws>//17
        <point name="OD"//18
                alias="OD.1cws"//19
                enable="true"//20
                reuseSessions="autouse"//21
                sessionMaxAge="1"      //22 было 20
                poolSize="1"           //23 было 10
                poolTimeout="1"/>      //24 было 5
    </ws>//25
</point>//26
Что нужно исправить? Ошибку пока выдает ту же
15 acht
 
14.12.20
13:09
16 1CNachalo
 
14.12.20
18:27
(15) пример из статьи
<pool  size="50" maxAge="10" attempts="2"  attepmtTimeout="1"
waitTimeout="1"/>
ставлю в standardOdata, в ws, в httpServices и в pool.
Получаю так
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system";
        xmlns:xs="http://www.w3.org/2001/XMLSchema";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        base="/fm"
        ib="File=&quot;D:\1C\тест\WebSer_активныеСистемы&quot;;">
    <debug enable="true"
            protocol="http"
            url="127.0.0.1"/>
    <ws enable="false" poolsize="5" maxAge="1" attempts="2"  attepmtTimeout="1"
waitTimeout="1"/>
    <httpServices publishByDefault="false" poolsize="5" maxAge="1" attempts="2"  attepmtTimeout="1"
waitTimeout="1"/>
    <standardOdata enable="true"
            reuseSessions="autouse"
            sessionMaxAge="2"
            poolSize="1"
            poolTimeout="5"/>
    <analytics enable="true"/>
</point>