Ошибка при обращении к тестовому сервису

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Веб-сервисы » Прямой доступ
Страницы: 1
Ошибка при обращении к тестовому сервису, Ошибка - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 77.108.74.117:8181
В VS добавил ссылку на веб службу - https://stage-ext.fccland.ru:4433/cxf/External?wsdl

Пытаюсь обратится в веб службе:


Код
ServiceReference1.createRequestIn req = new ServiceReference1.createRequestIn();
ServiceReference1.createRequestOut trt = new ServiceReference1.createRequestOut();
ServiceReference1.ExternalSEIClient send = new ServiceReference1.ExternalSEIClient();
trt = send.createRequest(req);

Возникает ошибка -
Прослушивание на http://stage-esb1-ext.fccland.ru:8181/cxf/External не выполняла ни одна конечная точка, которая могла бы принять сообщение. Среди прочих причин это могло быть вызвано неправильным адресом или действием SOAP. Подробнее см. в описании InnerException (если имеется).
InnerException - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 77.108.74.117:8181


App.config -
Код
 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="soap1.1Binding" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://stage-esb1-ext.fccland.ru:8181/cxf/External"
                binding="basicHttpBinding" bindingConfiguration="soap1.1Binding"
                contract="ServiceReference1.ExternalSEI" name="ExternalWSSoap1.1Port" />
        </client>
    </system.serviceModel>
</configuration>

Что я делаю не так?
Нет Религии выше Истины.
Поменяйте в app.config ссылку в endpoint address. На тот, который вы использовали при создании веб-службы.
Цитата
Роман Камерлох пишет:
https://stage-ext.fccland.ru:4433/cxf/External?wsdl
спасибо. Сделал так:


Код
 <system.serviceModel>
        <bindings>
            <basicHttpsBinding>
                <binding name="soap1.1Binding" />
            </basicHttpsBinding>
        </bindings>
        <client>
            <endpoint address="https://stage-ext.fccland.ru:4433/cxf/External"
                binding="basicHttpsBinding" bindingConfiguration="soap1.1Binding"
                contract="ServiceReference1.ExternalSEI" name="ExternalWSSoap1.1Port" />
        </client>
    </system.serviceModel>
 
Но теперь следующая напасть... :oops:

Выдает ошибку - Не удалось установить безопасный канал для SSL/TLS с полномочиями "stage-ext.fccland.ru:4433".

Я так понимаю или программа не использует сертификат или если использует то не тот.
Как заставить программу еще раз спросить какой сертификат использовать? VS спросила только один раз , когда я делал ссылку на службу" и больше не спрашивает. По идее раз я запускаю из VS то и сертификат подставляется тот который я указал. Или я не прав?

ЭЦП Технокад.
Изменено: Котин Данил - 26.08.2013 09:45:34 (Дополнение)
Нет Религии выше Истины.
Как "на лету" спрашивать пользователя я не разбирался.
В app.config в блоке system.serviceModel, последним блоком:

Код
<behaviors>
   <endpointBehaviors>
      <behavior name="credentialConfiguration">
         <clientCredentials>
            <clientCertificate findValue="5f58f57783af4f9d4650ca53397ff59b0c5e4413" storeLocation="CurrentUser" x509FindType="FindByThumbprint"/>
         </clientCredentials>
      </behavior>
   </endpointBehaviors>
</behaviors>
P.S. понятно, что в findValue должен быть отпечаток вашего сертификата.
Извиняюсь за задержку в ответе...
Теперь у меня другая напасть. :cry:
Вот код которым тестирую доступ к сервису:


Код
   ServiceReference1.createRequestIn req = new ServiceReference1.createRequestIn();
            req.okato = "248000";           
            ServiceReference1.createRequestRequest f = new ServiceReference1.createRequestRequest();
            f.createRequest = req;
            FileStream fs = new FileStream(@"C:\REQ_d3a6aa20-3d34-44ac-b119-3c5514980907.zip", FileMode.Open, FileAccess.Read);
            byte[] readBuf = new byte[fs.Length];
            fs.Read(readBuf, 0, (Convert.ToInt32(fs.Length)));
            req.requestData = readBuf;
            ServiceReference1.createRequestOut trt = new ServiceReference1.createRequestOut();
            ServiceReference1.createRequestResponse fff = new ServiceReference1.createRequestResponse(trt);
            ServiceReference1.ExternalSEIClient send = new ServiceReference1.ExternalSEIClient("ExternalWSSoap1.1Port");  //Вот тут возникает ошибка
            trt = send.createRequest(req);

Ошибка - Неправильный формат шестнадцатеричной строки.
error.png (52.79 КБ)
Нет Религии выше Истины.
Я посмотрел, единственное отличие от того, как делаю я: клиента (
new ServiceReference1.ExternalSEIClient("ExternalWSSoap1.1Port";);

) вызываю без параметров. Т.к. bindingConfiguration описан в app.config
По ошибке могу предположить, что проблема в app.config.

На VS отправки заявок у меня нет, есть проверка событий:

Код
      ExternalWS.ExternalSEIClient ews = new ExternalWS.ExternalSEIClient();

      ExternalWS.getEventsIn gin = new ExternalWS.getEventsIn();
      ExternalWS.getEventsOut gout = rws.getEvents(gin);

Цитата
Роман Камерлох пишет:
Я посмотрел, единственное отличие от того, как делаю я: клиента (
new ServiceReference1.ExternalSEIClient("ExternalWSSoap1.1Port";);

) вызываю без параметров. Т.к. bindingConfiguration описан в app.config
По ошибке могу предположить, что проблема в app.config.

На VS отправки заявок у меня нет, есть проверка событий:
Код
       ExternalWS.ExternalSEIClient ews = new ExternalWS.ExternalSEIClient();

      ExternalWS.getEventsIn gin = new ExternalWS.getEventsIn();
      ExternalWS.getEventsOut gout = rws.getEvents(gin);

 
Можете показать свой app.config полностью?
Нет Религии выше Истины.
Ну незнаю, поможет ли. Много мусора, ибо "проект" на VS тестовый:

Код
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="RosreestrViewer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="true" />
        </sectionGroup>
    </configSections>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="soap1.1Binding" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="Transport">
                        <transport clientCredentialType="Certificate" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
                <binding name="soap1.1Binding1" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
                <binding name="soap1.1Binding2" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="Transport">
                        <transport clientCredentialType="Certificate" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
                <binding name="soap1.1Binding3" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://portal.rosreestr.ru:4433/cxf/Request"
                behaviorConfiguration="credentialConfiguration" binding="basicHttpBinding"
                bindingConfiguration="soap1.1Binding" contract="RequestWS.RequestSEI"
                name="RequestWSSoap1.1Port" />
            <endpoint address="https://portal.rosreestr.ru:4433/cxf/External"
                behaviorConfiguration="credentialConfiguration" binding="basicHttpBinding" bindingConfiguration="soap1.1Binding2"
                contract="ExternalWS.ExternalSEI" name="ExternalWSSoap1.1Port" />
        </client>
      <behaviors>
        <endpointBehaviors>
          <behavior name="credentialConfiguration">
            <clientCredentials>

              <clientCertificate findValue="5f5f5e441343397f9f50cd48f57783af650ca59b" storeLocation="CurrentUser" x509FindType="FindByThumbprint"/>

            </clientCredentials>
          </behavior>
        </endpointBehaviors>
      </behaviors>

    </system.serviceModel>
    <applicationSettings>
        <RosreestrViewer.Properties.Settings>
            <setting name="RosreestrViewer_ru_rosreestr_portal_ExternalWS"
                serializeAs="String">
                <value>https://portal.rosreestr.ru:4433/cxf/External</value>
            </setting>
        </RosreestrViewer.Properties.Settings>
    </applicationSettings>
</configuration>


Насколько я понимаю, у меня используются soap1.1Binding2 (Service Reference)
и soap1.1Binding (Web-Reference)
Коллеги, подскажите: у кого нибудь удалось подключится в тестовому сервису с сертификатом выданным не в технокаде? в последние 2-3 дня сервис перестал откликаться
на сертификаты других УЦ а технокадовской нет чтобы проверить и тестовой подписи никто не выложил. пишет "A security error occured".
Роман, Данил подскажите что у вас с сервис хоть отвечает в последние дни? или ошибки сыпет.
Я тестовым не пользуюсь, рабочий (https://portal.rosreestr.ru:4433/cxf/External) работает.
Цитата
Вячеслав Савельев пишет:
Роман, Данил подскажите что у вас с сервис хоть отвечает в последние дни? или ошибки сыпет.
Сложно сказать, я так и не добился мненяемой работы от сервиса.

Цитата
Роман Камерлох пишет:
Я тестовым не пользуюсь, рабочий ( https://portal.rosreestr.ru:4433/cxf/External) работает.
т.е. для разработки тестируеш сразу на промышленном сервисе?
Нет Религии выше Истины.
Нет, разработка уже закончена, люди уже работают.
Косяки, конечно, еще выплывают, но такое в тестовой среде не отловишь.
Поэтому пользуемся для реальной работы и мониторим.
Новая ошибка сервиса, при проверке выдает "Ошибка вызова ФЛК: null" кто подскажет таблетку от этой беды?
Цитата
Вячеслав Савельев пишет:
ошибка сервиса, при проверке выдает "Ошибка вызова ФЛК: null"
Для тех кто упрется в эту ошибку. Ошибка связана с неправильными ссылками в файле заявления req_guid.xml на файл дела guoks_guid.xml или gkuzu_guid.xml. Еще очень важно сервис чувствителен к регистру, все расширения в отправленом пакете должны быть только маленькими буквами (.xml, .xml.sig, .jpg.sig и т.д.)
"Ошибка при расшифровки запроса" связана с тем что в описании сервиса неправильно описан процесс шифрования (умышленно или нет не знаю). zip архив не надо шифровать подписью с помощью КриптоАрм, его необходимо просто зашифровать обычной функцией языка программирования в разных языках они разные сделать надо "преобразование "single-byte" в закодированный формат "base64 binary", тогда архив из непонятного набора символов "{{зЅ[+їЬЮ№їыЛэU.4_щоъ·ї5zч›oЯ-юzm4ЮШЅ......" превратится в более стройный "UEsDBBQAAgAIAAAAAACnDM5dUSsAALS5BgAuAAAAR0tVWl...........................BgAAAAACAAIAkgAAAEDCAQAAAA==" и этот массив необходимо вставлятьв <requestData>.
Цитата
Вячеслав Савельев пишет:
"Ошибка при расшифровки запроса" связана с тем что в описании сервиса неправильно описан процесс шифрования (умышленно или нет не знаю). zip архив не надо шифровать подписью с помощью КриптоАрм, его необходимо просто зашифровать обычной функцией языка программирования в разных языках они разные сделать надо "преобразование "single-byte" в закодированный формат "base64 binary", тогда архив из непонятного набора символов "{{зЅ[+їЬЮ№їыЛэU.4_щоъ·ї5zч›oЯ-юzm4ЮШЅ......" превратится в более стройный "UEsDBBQAAgAIAAAAAACnDM5dUSsAALS5BgAuAAAAR0tVWl...........................BgAAAAACAAIAkgAAAEDCAQAAAA==" и этот массив необходимо вставлятьв <requestData>.

Цитата
Вячеслав Савельев пишет:
Цитата
Вячеслав Савельев пишет:
ошибка сервиса, при проверке выдает "Ошибка вызова ФЛК: null"
Для тех кто упрется в эту ошибку. Ошибка связана с неправильными ссылками в файле заявления req_guid.xml на файл дела guoks_guid.xml или gkuzu_guid.xml. Еще очень важно сервис чувствителен к регистру, все расширения в отправленом пакете должны быть только маленькими буквами (.xml, .xml.sig, .jpg.sig и т.д.)
Большое спасибо за подсказки!
Подскажите, кто-нибудь в курсе где взять тестовые сертификаты? Облазил вроде всё, есть документ: Описание сервиса Росреестра прямого взаимодействия в сети Internet, в нём есть приложение 1 в котором указаны файлы тестовых сертификатов, а самих файлов нигде не нашёл.
И работает тестовый сервис или нет всё таки?
Цитата
Николай Жилкин пишет:
Подскажите, кто-нибудь в курсе где взять тестовые сертификаты? Облазил вроде всё, есть документ: Описание сервиса Росреестра прямого взаимодействия в сети Internet, в нём есть приложение 1 в котором указаны файлы тестовых сертификатов, а самих файлов нигде не нашёл.
И работает тестовый сервис или нет всё таки?
Плюнте на тестовый сервис. Дольше будете сертификат искать. Отлаживайте сразу на рабочем, потому, что рабочий вам еще кучу сюрпризов принесет.
Цитата
Вячеслав Савельев пишет:
"Ошибка при расшифровки запроса" связана с тем что в описании сервиса неправильно описан процесс шифрования (умышленно или нет не знаю). zip архив не надо шифровать подписью с помощью КриптоАрм, его необходимо просто зашифровать обычной функцией языка программирования в разных языках они разные сделать надо "преобразование "single-byte" в закодированный формат "base64 binary", тогда архив из непонятного набора символов "{{зЅ[+їЬЮ№їыЛэU.4_щоъ·ї5zч›oЯ-юzm4ЮШЅ......" превратится в более стройный "UEsDBBQAAgAIAAAAAACnDM5dUSsAALS5BgAuAAAAR0tVWl...........................BgAAAAACAAIAkgAAAEDCAQAAAA==" и этот массив необходимо вставлятьв <requestData>.
Здравствуйте.
Не получается шифрование файла для запроса, сервер твердит "Ошибка при расшифровке запроса"
Подскажите, пожалуйста сам порядок шифрования, который у Вас работает.

Пишу в VS2012. Использую X509Certificate2.
Тестирую на рабочей площадке.

Я уже делал так:
1. Просто перевод zip-файла в Base64:
Код
byte[] FileData = File.ReadAllBytes(FileName);byte[] EncData = Encoding.ASCII.GetBytes(Convert.ToBase64String(FileData));
2. Шифрование сертификатами Tech_Kon_2.2.2.cer, Tech_Kon_2.2.5.cer и нашим собственным.
Код
byte[] Encrypt(byte[] data, X509Certificate2Collection encryptingCerts)
        {
            // create ContentInfo
            ContentInfo plainContent = new ContentInfo(data);

            // EnvelopedCms represents encrypted data
            EnvelopedCms encryptedData = new EnvelopedCms(plainContent);
            
            // add a recipient
            //CmsRecipient recipient = new CmsRecipient(encryptingCert);
            //или так? CmsRecipient recipient = new CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, encryptingCert);
            CmsRecipientCollection recipients = new CmsRecipientCollection(SubjectIdentifierType.IssuerAndSerialNumber, encryptingCerts);

            // encrypt data with public key of recipient
            encryptedData.Encrypt(recipients);

            // create PKCS #7 byte array
            byte[] encryptedBytes = encryptedData.Encode();

            // return encrypted data
            return encryptedBytes;
        }

потом подгружаю сертификаты и:

byte[] FileData = File.ReadAllBytes(FileName);
byte[] EncData = Encoding.ASCII.GetBytes(Convert.ToBase64String(Encrypt(FileData, certs)));

RequestIn.requestData = EncData;
Получается на 33% больше поток примерно такого вида: "MIORegwGCSqGSIb3DQEHA...........NWa8Fj6pm2lfGMSSueEiRRopkmP/LI=".
Что не так?! Если шифровать нашим сертификатом или сразу несколькими, то потом нашим спокойно расшифровывается!
Я на С# не писал модуль отправки, как обертки работают не знаю, но попробуйте так.
(FileName - это zip файл)

byte[] FileData = File.ReadAllBytes(FileName);
RequestIn.requestData = FileData;
Цитата
Роман Камерлох пишет:
Я на С# не писал модуль отправки, как обертки работают не знаю, но попробуйте так.
(FileName - это zip файл)

byte[] FileData = File.ReadAllBytes(FileName);
RequestIn.requestData = FileData;
Странно, но так сработало! Но ведь это просто чтение zip'а и не более того!
Получается, что никакого шифрования, никакого конвертирования в Base64 делать не нужно.
Кошмарная, конечно, документация...
Спасибо, большое!

P.S. Теперь "Ошибка при разборе данных, полученных от веб-сервиса удостоверяющего центра." :)
Цитата
Алексей Кирпичников пишет:
Странно, но так сработало! Но ведь это просто чтение zip'а и не более того!
Получается, что никакого шифрования, никакого конвертирования в Base64 делать не нужно.
Кошмарная, конечно, документация...
Спасибо, большое!

P.S. Теперь "Ошибка при разборе данных, полученных от веб-сервиса удостоверяющего центра."
Алексей, просто в C# вы пользуетесь прокси классами которые генерит студия, далее когда данные оборачиваются в SOAP конверт, то там уже производится преобразование массива байт в base64, но делается это уже на уровне библиотек .NET Framework.
Цитата
Дмитрий Скосырский пишет:
Цитата
Алексей Кирпичников пишет:
Странно, но так сработало! Но ведь это просто чтение zip'а и не более того!
Получается, что никакого шифрования, никакого конвертирования в Base64 делать не нужно.
Кошмарная, конечно, документация...
Спасибо, большое!

P.S. Теперь "Ошибка при разборе данных, полученных от веб-сервиса удостоверяющего центра."
Алексей, просто в C# вы пользуетесь прокси классами которые генерит студия, далее когда данные оборачиваются в SOAP конверт, то там уже производится преобразование массива байт в base64, но делается это уже на уровне библиотек .NET Framework.
Понятно, спасибо!
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)