powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Ответ на OneWay операцию
15 сообщений из 15, страница 1 из 1
Ответ на OneWay операцию
    #40025375
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Я понимаю, что ситуация странная, но есть некий сервис созданный по wsdl-описанию, на который приходит некая информация и согласно документации, он должен на эти данные отправить ответ.

Код: c#
1.
2.
3.
4.
5.
6.
public interface MisCallback_PortType
{
        [System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bAsyncResponse")]
        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)]
        void MisCallback_ProvideAndRegisterDocumentSet(MisCallback_ProvideAndRegisterDocumentSet request);
}



Возможно ли в C# заставить этот wcf сервис возвращать ответ (подготовленное soap-сообщение) без изменения wsdl-описания (сервис федеральный и с ними спорить бесполезно, wsdl-описание они не переделают)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class IHECallbackSoapInspecotor : IDispatchMessageInspector
{
.......
public void BeforeSendReply(ref Message reply, object correlationState)
{
  // подготовленное сообщение в base64
  string responseXML = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW52ZWxvcGUiPjxzb2FwOkhlYWRlcj48d3NhOk1lc3NhZ2VJRCB4bWxuczp3c2E9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDgvYWRkcmVzc2luZyIvPjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keSB4bWxuczp3c3U9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS11dGlsaXR5LTEuMC54c2QiPjxzdGF0dXM+U3VjY2Vzczwvc3RhdHVzPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT4=";
  XmlDocument document = new XmlDocument() { PreserveWhitespace = false };
  document.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(responseXML)));
  reply = SoapTools.CreateMessage(document, MessageVersion.Soap12WSAddressing10);
}
......
}



реализация ответа в BeforeSendReply не помогла, клиенту приходит:
HTTP/1.1 202 Accepted
Content-Length: 0

Очень нужна помощь, т.к. через сокеты работать с wcf особого желания нет.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025392
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@,

Если предполагается, что ответа нет, с чего бы раcсчитывать на вызов BeforeSendReply? :)

Какую задачу в конечном счёте-то решить хотите?
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025477
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я это прекрасно понимаю, но федералов хрен переубедишь, я по этому вопросу с их тех.поддержкой с июня месяца бодаюсь, от них ответ, в документации написано, что ответ должен быть, так что предоставьте и им по барабану, что их описание не может этого делать.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025482
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@,

А вы не можете wsdl ручками поправить перед кодогенерацией?
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025485
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал, тогда сервис не стартует
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025553
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть какая возможность в BeforeSendReply получить доступ к каналу и записать ответ в него минуя всю обвязку объектов.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025702
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@
Пробовал, тогда сервис не стартует


Что пишет?
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025736
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот wsdl описание по которому, согласно документации, мне надо создать сервис. Создаваемый на его основе референсы, функции получают атрибут IsOneWay = true, а это означает, что сервер при запросе сразу отвечает 202 Accepted, а потом начинает выполнение метода. Если в интерфейсе службы, пометить метод IsOneWay = false, то служба перестаёт принимать запросы, я думаю, что по причине того, что не находит путь до метода.
hVostt, если Вы гуру в этих вопросах, посоветуйте, как надо поправить описание или подскажите как перехватить (socket) принятое службой соединение и ответить в канал и не заморачиваться.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025817
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@,

Это же оно?

http://portal.egisz.rosminzdrav.ru/files/Методические_материалы_по_подсистеме_ИЭМК_v2.docx&usg=AOvVaw1yQ97VS1vh8p-79Vj9KRuf

Согласно документации, ответ приходит асинхронно, методом обратного вызова.

Для получения ответов в асинхронном режиме от сервисов ИЭМК (для сообщений в соответствии спрофилями IHE XDS.b) на стороне МИС (РМИС) должен быть реализован и развернут сервис обратного вызова, описание которого представлено в ПРИЛОЖЕНИЕ 20. Пример WSDL веб-сервиса обратного вызова на стороне МИС (РМИС).
При получении асинхронного ответа веб-сервису обратного вызова необходимо отправить в ИПС ответ в формате soap об успешном получении асинхронного ответа. Ответ сервиса должен быть подписан с помощью сертификата МИС (РМИС), зарегистрированного в ИПС согласно документу «Методические материалы по подключению к ИПС». Структура и описание атрибутов ответа о получении асинхронного ответа приводится в ПРИЛОЖЕНИЕ 7. Структура и содержание подтверждения асинхронного ответа на извещение «Предоставить и зарегистрировать набор документов», пример ответа представлен в ПРИЛОЖЕНИЕ 8. Подтверждение асинхронного ответа на извещение ITI-41 («Предоставить и зарегистрировать набор документов»)


Так что ответ 202 вполне корректный и правильный. Если вы будет на запрос отправлять какой-то другой ответ, он не будет обработан.

Или я что-то не так понимаю в вашей задаче?

Потому что иначе, вам придётся выкинуть wsdl и пилить с нуля сервис, такой как надо вам, со своим wsdl-ем.

Могу ошибаться конечно :)
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025873
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСогласно документации, ответ приходит асинхронно, методом обратного вызова.
Да, это именно это описание ( http://portal.egisz.rosminzdrav.ru/materials/45) и в приложении 8 описан soap, который этот сервис должен вернуть (синхронны ответ на асинхронный ответ сервису обратного вызова)

авторПотому что иначе, вам придётся выкинуть wsdl и пилить с нуля сервис, такой как надо вам, со своим wsdl-ем.
Спасибо за участие, я запилил сервис без использования библиотеки soap, с использованием socket и ручного разбора пришедшего soap, ну и, само-собой, ответ как они хотят.

Ещё раз спасибо за участие.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025976
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@
Да, это именно это описание ( http://portal.egisz.rosminzdrav.ru/materials/45) и в приложении 8 описан soap, который этот сервис должен вернуть (синхронны ответ на асинхронный ответ сервису обратного вызова)


Не вернуть, а послать методу обратного вызова.

Всё как с укладкой асфальта и других сфер в России.
Привезли иностранный микроскоп и сломали, пока забивали им гвозди :)
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40025978
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@
Спасибо за участие, я запилил сервис без использования библиотеки soap, с использованием socket и ручного разбора пришедшего soap, ну и, само-собой, ответ как они хотят.


Главное, что решилось )
Но вы им напишите, что они по идее должны свой сервис развернуть, чтобы ответы слать.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40026012
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я им уже пытался объяснить, что сервис обратного вызова, который мы должны создать, на основе их wsdl-описания из документации имеет только OneWay методы и не может предоставить ответ на их запрос. Но, им абсолютно наплевать на это, ведь они написали в документации, что может, значит вы хреновые программеры, что не можете этого сделать.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40026055
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIM@
Я им уже пытался объяснить, что сервис обратного вызова, который мы должны создать, на основе их wsdl-описания из документации имеет только OneWay методы и не может предоставить ответ на их запрос. Но, им абсолютно наплевать на это, ведь они написали в документации, что может, значит вы хреновые программеры, что не можете этого сделать.


Они игнорируют то, что прямо написано в документации и транслируют вам свои фантазии.
Я бы настаивал на спеке.


Потом вам всем выйдет боком.
...
Рейтинг: 0 / 0
Ответ на OneWay операцию
    #40026263
DIM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переубедить федералов, что они не правы НЕРЕАЛЬНО, поэтому будем мучаться.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Ответ на OneWay операцию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (7): Анонимы (4), Yandex Bot, Bing Bot 2 мин., Cat2 5 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]