These are chat archives for springjazzy/GIS_JKH_Integration

18th
Mar 2016
Nikita
@springjazzy
Mar 18 2016 05:48
Я просто на СИТ для всех сертификатов сделал один пароль и всё. У меня в примере есть как пароль программно задавать.
@springjazzy а что именно с криптопро происходит?
у меня стабильно он слетает после обновления windows например
Denis Ilyushchenko
@gizmo75rus
Mar 18 2016 06:58
Всем доброго утра.
Vershinin Sergey
@versh23
Mar 18 2016 06:58
Доброе
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:00
Всем привет. Было у кого-нибудь сообщение о внутренней ошибке при попытке получить например список справочников или ИД поставщика дынных EXP00100?
Vershinin Sergey
@versh23
Mar 18 2016 08:01
привет. а целиком ошибку можно увидеть?
ошибок было полно у всех, я думаю))
ndbn
@ndbn
Mar 18 2016 08:02
Вероятно эндпоинт не верный, должен быть примерно такой http://127.0.0.1:8090/ext-bus-org-registry-common-service/services/OrgRegistryCommon т.е. с Common
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:03
такой
8090 ?
я думала порт 8080
Vershinin Sergey
@versh23
Mar 18 2016 08:03
8090 - это тунель юзайется
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:03
у меня на 8080 настроено
ndbn
@ndbn
Mar 18 2016 08:03
на начало не смотрите
ответ в принципе есть, иначе ругается что не найден url
Vershinin Sergey
@versh23
Mar 18 2016 08:05
целиком ответ можете показать?
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:06
    Message    "EXP001000: ???????????????????? ????????????"    string
в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
в GISGKHTest.NsiServiceCommon.NsiService.exportNsiList(exportNsiListRequest exportNsiListRequest) в E:\GIS GKH\GISGKH\GISGKHTest\Web References\NsiServiceCommon\Reference.cs:строка 109
Nikita
@springjazzy
Mar 18 2016 08:10
@NadyaTomsk с ????? особо не разгуляешься в догадках
Vershinin Sergey
@versh23
Mar 18 2016 08:10
в Fault ErrorMessage можете показать?
Nikita
@springjazzy
Mar 18 2016 08:21
EXP001000 Внутренняя ошибка
может быть всё что угодно ))
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:21
где посмотреть Fault ?
Nikita
@springjazzy
Mar 18 2016 08:22
в 100% случаях у меня была ошибка с их стороны
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:22
спасибо, напишу вопрос в техподдержку
Vershinin Sergey
@versh23
Mar 18 2016 08:23
@NadyaTomsk в полном SOAP ответе. попробуйте например сформированный вами SOAP запрос отправить через SOAPui, там все будет видно
просто тех поддержка вам ответит, как правило, не скоро))
NadyaTomsk
@NadyaTomsk
Mar 18 2016 08:29
к сожалению только начала знакомиться с веб методами и сформировать самостоятельно SOAP запрос вряд ли смогу
Vershinin Sergey
@versh23
Mar 18 2016 08:40
вы же прокси класс генерировали для 8.6.0.6 ?
Константин
@LTramp
Mar 18 2016 08:52
@springjazzy @NadyaTomsk У меня была EXP001000 Внутренняя ошибка если я подписывал сообщения не тем сертификатом.
Nikita
@springjazzy
Mar 18 2016 08:57
@LTramp это если ОГРН в сертификате не совпадает с SenderID? Тогда они прямо так и пишут
Константин
@LTramp
Mar 18 2016 08:58
@springjazzy Да. Мне например не писали.
Nikita
@springjazzy
Mar 18 2016 08:58
В последних версиях так.
NadyaTomsk
@NadyaTomsk
Mar 18 2016 09:22
@versh23 у меня не класс а внешняя ссылка Web References
Vershinin Sergey
@versh23
Mar 18 2016 10:36
Народ, криптопро .net вы какую лицензию покупали? серверную или десктоп?
Константин
@LTramp
Mar 18 2016 10:42
@versh23 пока не покупали
@springjazzy насколько я понимаю у тебя реализована клиент-серверная подпись. Значит тебе необходимо иметь xml запроса. Собственно вопрос - как ты его получаешь? Собираешь его ручками или перехватываешь Behavior (в нем сохраняешь xml и отклоняешь запрос) или как то еще? Просто эти два варианта кажутся мне не особо удобными.
Nikita
@springjazzy
Mar 18 2016 10:43
@springjazzy насколько я понимаю у тебя реализована клиент-серверная подпись. Значит тебе необходимо иметь xml запроса. Собственно вопрос - как ты его получаешь? Собираешь его ручками или перехватываешь Behavior (в нем сохраняешь xml и отклоняешь запрос) или как то еще? Просто эти два варианта кажутся мне не особо удобными.
сейчас перехватываю и сохраняю
затем пользователь заходит в свой кабинет и подписывает сообщения
своей подписью - которой у меня нет ессно
если надо напрямую послать под моей подписью то просто перехватываю xml, подписываю его и дальше прокидываю в ГИС
Константин
@LTramp
Mar 18 2016 11:02

если надо напрямую послать под моей подписью то просто перехватываю xml, подписываю его и дальше прокидываю в ГИС

Не подскажешь какие на данный момент это запросы? Просто насколько я видел, там или нужна подпись поставщика или не нужна вообще.

На что ориентируешься в перехватчике для определения должен ли подписать его пользователь(поставщик) или нет? Наличие SenderId и/или атрибута Id="signed-data-container"? Либо как то еще? Спасибо :3

Nikita
@springjazzy
Mar 18 2016 11:04
Прямо сейчас да все запросы которые раньше надо было подписывать от оператора ИС можно отправлять без подписи - загрузка базового НСИ и получение инфы о поставщиках. Получается за остатком этого всё подписывает конечный пользователь да
но в будущем может поменяться - будет делегирование полномочий к ИС. И тогда ИС будет всё подписывать под собой, а senderID будет пользователя
Константин
@LTramp
Mar 18 2016 11:10
Насчет делегирования полномочий вообще все очень непонятно с юридической стороны. Допустим если в ГИСЖКХ загружены некорректные данные (а такое будет обязательно), данные были подписаны ИС, следовательно и спрашивать с нее, несмотря на то что владельцами данных являются поставщики. Я не юрист конечно, но на мой взгляд зоны ответствнности распределяются не правильно.
ndbn
@ndbn
Mar 18 2016 11:30

@versh23

Народ, криптопро .net вы какую лицензию покупали? серверную или десктоп?

это же зависит исключительно от ОС, если ставится на винду, линукс * desktop - то обычная, если free bsd, windows server и т.д., то серверная

если ОС спорная, то они пишут спрашивать у них.

Nikita
@springjazzy
Mar 18 2016 11:31
@LTramp там до этого еще как на маршрутке до Юпитера ))
Константин
@LTramp
Mar 18 2016 11:32

@springjazzy это точно

На что ориентируешься в перехватчике для определения должен ли подписать его пользователь(поставщик) или нет? Наличие SenderId и/или атрибута Id="signed-data-container"? Либо как то еще? Спасибо :3

Vershinin Sergey
@versh23
Mar 18 2016 11:34
@ndbn разница в цене ощутимая) я лично думаю desktop взять, интересно что у вас
ndbn
@ndbn
Mar 18 2016 11:37
@versh23 ощутимая, а продукт тот же :) пока не покупали, но если будем то обычную, т.к. у нас винда обычная
Nikita
@springjazzy
Mar 18 2016 11:39
Коллеги не в курсе есть в WCF такая возможность - отправить в никуда?
сейчас мы для подписи используем зеркальную копию их сервисов, которые просто принимают на вход неподписанное сообщение и сохраняют его
для последующего подписания
если была бы возможность отправить в НИКУДА - я бы перехватил, сохранил и отправил. А результат мне не важен в данном случае
потому как данное сообщение всё равно надо еще подписать сертификатом пользователя
Константин
@LTramp
Mar 18 2016 11:41
@springjazzy не подходит?
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
    channel.Abort();
}
Nikita
@springjazzy
Mar 18 2016 11:42
о класс. Сейчас попробую
Nikita
@springjazzy
Mar 18 2016 12:19
нет так не прокатит
Константин
@LTramp
Mar 18 2016 12:19
@springjazzy почему?
Nikita
@springjazzy
Mar 18 2016 12:19
он уже канал открывает к тому времени и обижается что такого endpoint'а не существует
Константин
@LTramp
Mar 18 2016 12:21
@springjazzy а нельзя на их эндпоинты ссылаться? Запрос все равно же не отошлется.
Nikita
@springjazzy
Mar 18 2016 12:22
@LTramp Точно. Всё гениальное просто
ща
Константин
@LTramp
Mar 18 2016 12:32

@springjazzy у меня вот так реализовано

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
    XDocument xml = XDocument.Parse(MessageString(ref request));

    var mgr = new XmlNamespaceManager(xml.CreateReader().NameTable);
    mgr.AddNamespace("s", "http://schemas.xmlsoap.org/soap/envelope/");
    //берется первый объект из тела (он там только один может быть)
    var xmlElement = xml.XPathSelectElement("/s:Envelope/s:Body/*[1]", mgr);

    var mgr2 = new XmlNamespaceManager(xml.CreateReader().NameTable);
    mgr2.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
    //ищется подпись
    var singature = xmlElement.XPathSelectElement("/ds:Signature", mgr2);
    //ищется атрибут Id="signed-data-container" 
    var attrId = xmlElement.Attribute("Id");
    //Если атрибут есть
    if (attrId != null)
    {    
        //А подписи нет
        if (singature == null)
        {
            var originalDoc = new XmlDocument { PreserveWhitespace = true };
            originalDoc.LoadXml(MessageString(ref request));
            //
            //сохраняем originalDoc
            //

            //отменяем запрос
            channel.Abort();
        }
    }
    return null;
}

Именно про эти проверки я тебя срашивал ранее)

Только вот есть проблема одна. WCF добавляет в заголовок XML элемент Action (вроде так). Его потом необходимо удалить вручную, т.к. с ним запрос не проходит. Походу из него берется информация на какой из методов эндпоинта отсылать запрос, а непосредственно перед отправкой он (WCF) его удаляет. Но это лишь мое предположение и я могу ошибаться.
Vershinin Sergey
@versh23
Mar 18 2016 12:36
This message was deleted
Nikita
@springjazzy
Mar 18 2016 12:37
Да так и есть про Action
Vershinin Sergey
@versh23
Mar 18 2016 12:37
да, видимо так
Константин
@LTramp
Mar 18 2016 12:40
@versh23 как бысто у тебя все менятеся))
Vershinin Sergey
@versh23
Mar 18 2016 12:42
оно не менялось. я и написал, что у меня с Action работало, т.е. в BeforeSend xml с ACTION и все проходит. но если выполнить через SOAPUI, будет ошибка. поэтому тоже решил, что на каком то этапе в wcf удаляется
Константин
@LTramp
Mar 18 2016 12:43
@versh23 ;)
Vershinin Sergey
@versh23
Mar 18 2016 12:44
просто пока написал, ты уже коммент отредактировал)
Константин
@LTramp
Mar 18 2016 12:51

@springjazzy мог бы ты поподробнее разъяснить как происходит реализованная тобой смешанная подпись? Начальство требует от меня четких разъяснений для чего нужен второй (на сервере который) сертификат. Смотрю код и нифига не понимаю. Желательно на примере элемента ds:Signature, прямо по xml тексту. Потом ты сможешь это в ридми на гитхабе выложить.) Буду очень благодарен.

P.S. Раньше вооще не имел дела с сертификатами, да и вообще на JS клиенты писал. Шарпа в новинку, скажем так.

Nikita
@springjazzy
Mar 18 2016 12:58
так там же в тесте написано всё по шагам
сертификат на сервере нужен
  1. Для отправки сообщений которые вы будете подписывать под своим сертификатом
  1. для открытия SSL канала - шифрование то будет под вашим сертификатом идти
  1. Для создания шаблона сообщения
Константин
@LTramp
Mar 18 2016 13:00
Вопрос именно для чего нужен второй сертификат при подписи сообщения клиентом
Nikita
@springjazzy
Mar 18 2016 13:00
странно нумерация у меня 1,2,3 а отображает везде 1..
Константин
@LTramp
Mar 18 2016 13:00
Вот именно шаблон, какие именно поля в этом шаблоне?
Nikita
@springjazzy
Mar 18 2016 13:01
да все. он же фактически создает подпись только под серверным сертификатом
клиенту потом шлешь хеш, клиент возвращает подпись
Константин
@LTramp
Mar 18 2016 13:03
Вот именно что хранится в этих полях (не считая самой подписи, которая потом подменяется). Если они не зависят от сертификата, почему нужен сертификат? Если это хэш-суммы, почему для их вычисления нужен сертификат на сервере? Если мы берем эти хэш суммы с нашим сертификатом, то мы их же и отправляем. Т.е. часть подписи формируем мы.
и я вот не знаю что ответить на этивопросы(
Nikita
@springjazzy
Mar 18 2016 13:04
Для вычисления хеш сумм на сервере сертификат не нужен. Хеш с сертификатом не связан.
просто библиотека xades на вход принимает сертификат. По сути все хеши расчитываются когда выполняется метод computesignature
ты можешь вообще сертификат использовать
  1. тестовый
  1. не гостовский.
если ты под ним канал не будешь открывать
а он тебе нужен чисто для создания шаблона для подписи
Константин
@LTramp
Mar 18 2016 13:07

По сути все хеши

Не скажешь какаие именно и от чего?

Nikita
@springjazzy
Mar 18 2016 13:08
ну это стандарт xmldsig.
хеш считается от элементов Reference
у каждого Reference есть хеш
затем берется хеш от элемента SignedInfo и подписывается. Результат попадает в ds:SignatureValue
по сути есть 3 хеша в Xades
2 Reference и 1 который ты не видишь - он в подписи
открой пример сообщения с подписью - увидишь
по сути на сервере рассчитывается 2 хеша и последний общий отправляется на подпись клиенту
т.к. подписывается только он
ну там еще гемор есть в вычислении хешов что сначала необходимо текст канонализировать
каноникализировать вернее так.
так вот
Константин
@LTramp
Mar 18 2016 13:12
@springjazzy спасибо, стало более потяно, дальше думаю сам разберусь)
Nikita
@springjazzy
Mar 18 2016 13:12
если вы хотите вообще избавится от криптопро /net то можно
  • передавать тексты сообщений для хеширования клиенту. Делегировать хеширование ему
Константин
@LTramp
Mar 18 2016 13:13
@springjazzy как понимаю KeyInfo и Object формируются из данных сертификата клиента
Nikita
@springjazzy
Mar 18 2016 13:13
  • Вычислять хеш через interop
  • Вычислять хеш через openssl
@springjazzy как понимаю KeyInfo и Object формируются из данных сертификата клиента.
Да
Константин
@LTramp
Mar 18 2016 13:14
@springjazzy так ведь вроде именно для вычисления хешей по ГОСТ нужен криптопровадер
Nikita
@springjazzy
Mar 18 2016 13:15
хеш по ГОСТ можно вычислить разными способами
я их перечислил выше.
Константин
@LTramp
Mar 18 2016 13:15
@springjazzy ясно, спасибо тебе огромное)
Nikita
@springjazzy
Mar 18 2016 13:16
ну и да - отвечая на твой вопрос - через CryptoPro.NET тоже можно вычислить хеш ). Что я и делаю в библиотеке, т.к. это самый удобный путь
Константин
@LTramp
Mar 18 2016 13:17
@springjazzy так ведт для того что бы программно задать пароль к контейнеру при шифровании тоже нужен криптопро.Net. Так что думаю от него не избавиться.
Nikita
@springjazzy
Mar 18 2016 13:18
так ты сделай сертификат без пароля
Константин
@LTramp
Mar 18 2016 13:18
сертификат на рутокене
Nikita
@springjazzy
Mar 18 2016 13:19
ты можешь сертификат взять какой угодно - хоть RSA. Уточню - для подписи. Если тебе надо канал открывать SSL то конечно он не подойдет.
но для подписи - да пофиг как он шифрует. Ты всё равно ведь подпись перебьешь. А хеши можешь через варианты описанные выше вычислить
Константин
@LTramp
Mar 18 2016 13:20
@springjazzy ну так вот для TLS и используется сертификат с рутокена.
Nikita
@springjazzy
Mar 18 2016 13:20
ну здесь надо разделять подпись и TLS канал
одно мухи другие котлеты
Константин
@LTramp
Mar 18 2016 13:20
я разделяю
подпись - подписью, шифрование - шифрованием
Nikita
@springjazzy
Mar 18 2016 13:21
а в чем проблема взять еще один тестовый бесплатный сертификат для шаблона подписи?
если ты рутокеновским хочешь подписывать, то тогда да нужно пароль вбивать
но кстати я это сделал
Константин
@LTramp
Mar 18 2016 13:23
пробем нет, но меня просили подробно объяснить что и как со смешанной подписью и почему нужен второй (не обязательно наш).
Nikita
@springjazzy
Mar 18 2016 13:23
если рутокен есть значит есть CSP. Так?
Константин
@LTramp
Mar 18 2016 13:24
Да, видел, эменно этот метод использую для задания пароля при шифровании с помощью рутокена.
Так
Nikita
@springjazzy
Mar 18 2016 13:25
@LTramp и что работает метод?
Константин
@LTramp
Mar 18 2016 13:25
Работает
Nikita
@springjazzy
Mar 18 2016 13:25
ну всё. Ты же не используешь для этого CryptoPro.NET
значит вопрос с заданием пароля решается.
CryptoPro.NET тогда остается для открытия SSL канала. Но ты вроде туннель юзаешь.
а вычисление хешей можешь посмотреть вот здесь - https://github.com/VVi3ard/xmlDsig/tree/master/SIRCrypt/SIRCrypt
Константин
@LTramp
Mar 18 2016 13:30
if (certificate != null)
            {
                var secureString = new SecureString();
                foreach (var ch in password)
                    secureString.AppendChar(ch);
                var gost3410CryptoServiceProvider = certificate.PrivateKey as Gost3410CryptoServiceProvider;
                if (gost3410CryptoServiceProvider != null)
                    gost3410CryptoServiceProvider.SetContainerPassword(secureString);
            }
Так все равно шарпей нужен (Gost3410CryptoServiceProvider). Нет, не тунель. Говорю же TLS канал организуется в коде с помощью рутокена.
//cc - ClientCredentials
cc.ClientCertificate.Certificate = certificate;
Nikita
@springjazzy
Mar 18 2016 13:31
тогда можешь не парится. Тебе всё равно CryptoPro.NET использовать
Константин
@LTramp
Mar 18 2016 13:32
@springjazzy а нет, я перепутал, я не твой SetContainerPassword использую, а шарпея. Посмотрел что названия одинаковые и не проверил
Vershinin Sergey
@versh23
Mar 18 2016 13:32

ребят, я на c# не силен вовсе, может вы что то подскажете. например импорт дома

   var result = new ImportResult();
            client.importHouseRSOData(getHeader(), request, out result);

            var item_ = (ImportResultCommonResult)result.Items[0];
            var item__ = item_.Items[0];
            if (item__ is CommonResultTypeError)
            {
                CommonResultTypeError e = (CommonResultTypeError)item__;
                logger.Info(e.Description);
            }
            else
            {
                logger.Info(item__.ToString());
            }

ведь это ужасные касты) либо прокси классы сформировались как то не так, либо делаю не так

Nikita
@springjazzy
Mar 18 2016 13:32
ну у меня и такой и такой есть ) Один в ветке без CryptoPro другой в с CryptoPro
Константин
@LTramp
Mar 18 2016 13:33
Опа, две ветки. Неожиданно)
Nikita
@springjazzy
Mar 18 2016 13:33
ну начал делать. Но времени пока не хватает закончить
Идею я вам описал. Если кто захочет реализовать....
Константин
@LTramp
Mar 18 2016 13:35
@springjazzy я думаю что врятли. Ну лично у меня опыта не хватит для таких дел)
@versh23 тут сложно что-либо сказать, нужно под дебагом смотреть
Nikita
@springjazzy
Mar 18 2016 13:36
@versh23 Всё так и есть. Страшные касты
Vershinin Sergey
@versh23
Mar 18 2016 13:37
@LTramp да оно то работает) но код ужасный
@springjazzy хех, спасибо
Nikita
@springjazzy
Mar 18 2016 13:38
@versh23 ты можешь LINQ использовать для работы с коллекциями
Константин
@LTramp
Mar 18 2016 13:40
@springjazzy тут даже не в линку дело, проверки на ошибки надо выносить отсюда в отдельные методы
Nikita
@springjazzy
Mar 18 2016 13:40
var error = item__ as CommonResultTypeError) if (error != null) logger.Info(error.Description);
как вы код вставляете так красиво?
Константин
@LTramp
Mar 18 2016 13:40

`
код

`

Vershinin Sergey
@versh23
Mar 18 2016 13:41
три апострофа
сферху и снизу
Константин
@LTramp
Mar 18 2016 13:41
`
такие
я даже нез наю как их с клавы ввести)
копирую все время
Vershinin Sergey
@versh23
Mar 18 2016 13:41
ё
Nikita
@springjazzy
Mar 18 2016 13:41
))))
короче вы поняли
Константин
@LTramp
Mar 18 2016 13:42
код
Nikita
@springjazzy
Mar 18 2016 13:42
ёкодё
Vershinin Sergey
@versh23
Mar 18 2016 13:42
нажми ctrl + shift + m
Константин
@LTramp
Mar 18 2016 13:42
красота)
Vershinin Sergey
@versh23
Mar 18 2016 13:42
там типа справка
ёёё
код
ёёё
Константин
@LTramp
Mar 18 2016 13:42
раскладку только преключить
Nikita
@springjazzy
Mar 18 2016 13:42
punto switcher?
код
yes
Константин
@LTramp
Mar 18 2016 13:43
punto switcher - это вобще наркотик, как же я болезненно от него лечился
Nikita
@springjazzy
Mar 18 2016 13:43
This message was deleted
@versh23 смотри я делал так
все result у них как правило имеют общие свойства
я реализовал интерфейс в partial классе
 public interface IErrorItems
    {
        object[] Items { get; }
    }
и использую один метод для обработки ошибок который имеет на входе этот интерфейс
и там уже всё проверяю.
рефакторинг Фаулера ))
LTramp @LTramp пошел курить про интерфейсы и партиалы
Vershinin Sergey
@versh23
Mar 18 2016 13:49
@springjazzy спасибо) пойду курить с @LTramp :D
Nikita
@springjazzy
Mar 18 2016 13:52
у тебя проблема не с кастами, а то что в каждом сервисе ты будешь писать такой код => дублирование кода, что плохо
ndbn
@ndbn
Mar 18 2016 13:54
This message was deleted
Vershinin Sergey
@versh23
Mar 18 2016 13:54
при чеке дома ErrorMessageType, при импорте CommonResultTypeError, в других тоже другие классы наверное)
Nikita
@springjazzy
Mar 18 2016 13:55
на самом деле 2 варианта
ndbn
@ndbn
Mar 18 2016 13:56
Хотел написать вопрос а он по ходу отпал.
Nikita
@springjazzy
Mar 18 2016 13:57
public interface IErrorItem
    {
        object Item { get; }
    }
    public interface IErrorItems
    {
        object[] Items { get; }
    }
вот и всё
реализовываете в partial и вперед
Vershinin Sergey
@versh23
Mar 18 2016 14:00
в классе каком? сгенерированном же нельзя..
Nikita
@springjazzy
Mar 18 2016 14:00
в partial
Vershinin Sergey
@versh23
Mar 18 2016 14:01
так, пойду почитаю как partial используют) спасибо за наводки
blob
пробую загружать дома и смущает что в графе "пользователь" пусто.. так и должно и оно заполняется только если через веб морду файлы льешь?
ndbn
@ndbn
Mar 18 2016 14:12

Вообще очень смущает. что в любой из следующих версий протокола, после перегенерации wsdl файлов в cs вот такие вещи, типа ItemsChoiceType3

 [System.Xml.Serialization.XmlElementAttribute("ItemsElementName", Order=1)]
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public ItemsChoiceType3[] ItemsElementName
        {
            get
            {
                return this.itemsElementNameField;
            }
            set
            {
                this.itemsElementNameField = value;
                this.RaisePropertyChanged("ItemsElementName");
            }
        }

превратятся в ItemsChoiceType5 и т.п., и таких есть не мало. Я прав или нет?!

VVi3ard
@VVi3ard
Mar 18 2016 15:14
Всем привет, спасибо springjazzy за приглашение. Я пытался реализовать обмен на 1С но проблемы возникли еще на этапе отправки запроса exportOrgRegistry (который не нужно подписывать), 1С не умеет работать с HEADER в SOAP сообщениях, в итоге вернулся к варианту промежуточного сервиса на C# которому 1С будет давать данные для отправки. Сейчас проблема возникла с неожиданной стороны, не пойму как попасть в ЛК. МагПро криптотунель установлен и настроен? Через SOAP UI запросы уходят, ответы приходят при использовании endpoint вида:
http://127.0.0.1:8080/ext-bus-org-registry-common-service/services/OrgRegistryCommon
Если в браузере зайти по ссылке http://127.0.0.1:8080/ открывается портал и вываливается масса сообщений об ошибках:
alt
Пробовал без туннеля, через IE напрямую на адрес https://54.76.42.99:60045/#/main, браузер запрашивает сертификат, точно так же открывается страничка с кучей ошибок. При попытке войти: https://54.76.42.99:60045/sp-web/sp/login ( http://127.0.0.1:8080/sp-web/sp/login), ошибка 404 не найдено.
Странно картинка не вставилась: http://hkar.ru/HoIR
Вообще изначально проблема в том что:
VVi3ard
@VVi3ard
Mar 18 2016 15:20
hcs-organizations-registry-common-service.RegOrgBinding возвращает:
<ns4:ErrorMessage>
<ns4:ErrorCode>INT002012</ns4:ErrorCode>
<ns4:Description>Нет объектов для экспорта.</ns4:Description>
</ns4:ErrorMessage>
Хотя регистрацию на СИТ оформляли пришло письмо с логинами/паролями.
Константин
@LTramp
Mar 18 2016 15:34
@VVi3ard SearchCriteria (или как то так) правильно сформирован?
VVi3ard
@VVi3ard
Mar 18 2016 15:36
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://dom.gosuslugi.ru/schema/integration/8.6.0.6/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/8.6.0.6/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <soapenv:Header>
      <ns:ISRequestHeader>
          <ns:Date>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</ns:Date>
         <ns:MessageGUID>${=java.util.UUID.randomUUID()}</ns:MessageGUID>
       </ns:ISRequestHeader>
   </soapenv:Header>
   <soapenv:Body>
      <org:exportOrgRegistryRequest>
           <org:SearchCriteria>
           <ns:OGRN>ТУТ НОМЕР ОРГН КАК В СЕРТИФИКАТЕ</ns:OGRN>
         </org:SearchCriteria>
           </org:exportOrgRegistryRequest>
   </soapenv:Body>
</soapenv:Envelope>
Я поэтому и хотел зайти в ЛК посмотреть что там внесено но вот засада. А как Вы заходите в ЛК по какой ссылке?
я по этой
VVi3ard
@VVi3ard
Mar 18 2016 15:38
Вот спасибо! По этой зашел, буду сейчас смотреть.
Константин
@LTramp
Mar 18 2016 15:40

ТУТ НОМЕР ОРГН КАК В СЕРТИФИКАТЕ

Номер ОГРН должен быть как в поставщике информации, который указывали в заявке на подключение к СИТ

VVi3ard
@VVi3ard
Mar 18 2016 15:41
Да оказалось в ЛК не тот ОРГН который в сертификате.
должны были один и тот же указывать х.з. как так получилось.
Тот что в ЛК вообще левый, просто название немного схожее с нашей организацией. Спасибо за информацию по ссылке