Как получить доступ к веб-службе со следующими параметрами и клиентским прокси, созданным на основе wsdl

#c# #.net #wcf #soa

#c# #.net #wcf #soa

Вопрос:

Мне был предоставлен WSDL, и я сгенерировал прокси-класс на основе этого WSDL. Извините, не могу предоставить WSDL из-за соображений безопасности. Метод в классе прокси, который я хотел бы вызвать, является:

     public HeaderValueType GetStatus(System.DateTime RequestorTrxTime, string RequestorContext, string MessageIdentifier, string ProfileNumber, string ProfileType, int RequestIndicator, out ResponseBodyType Response) {//Some code}
  

Мне просто интересно, какие поля

 string RequestorContext, string MessageIdentifier
  

Подразумевается, что я видел, что requestorContext передается как объект, подобный этому:

 OperationContext.Current.InstanceContext
  

Но не в виде строки, то же самое относится и к MessageIdentifier .

У меня некоторое время не было доступа к создателям этого WSDL, и я не могу получить доступ, поэтому я подумал, что у кого-нибудь есть подсказка.

Комментарии:

1. Не могли бы вы пояснить, что вы подразумеваете под «Я видел, что requestorContext передается как объект, подобный этому ..».. Где вы это видели? Можете ли вы опубликовать пример кода.

2. Вот краткий пример, который я смог найти прямо сейчас. ИСПОЛЬЗУЙТЕ ЭТУ ссылку , затем найдите следующий код на странице: ‘Контекст InstanceContext = новый контекст InstanceContext (обратный вызов); прокси-сервер MyContractClient = новый MyContractClient(контекст);’

3. Извините, я имел в виду, что он передает его не непосредственно вызывающей службе, а методу в собственном сервисном прокси-сервере клиента.

4. Сегмент кода, на который вы ссылаетесь, используется, если вы хотите создать двусторонний клиентский прокси. В случае дуплексной службы WCF прокси поддерживает канал обратного вызова между клиентом и сервером, поэтому клиент будет использовать InstanceContext механизм обратного вызова. Является ли ваш сервис дуплексным сервисом? Возможно , это просто путаница в номенклатуре, и string RequestorContext параметр относится к чему — то совершенно иному, чем an InstanceContext .

Ответ №1:

Вы пытались вызвать службу, просто передавая некоторые значения в эти поля? Это больше похоже на совпадение имен. Убедитесь, что связанные XSD из WSDL указывают это как содержимое сообщения. Также убедитесь, что WSDL содержит вызываемое утверждение политики CompositeDuplex и утверждения для надежного обмена сообщениями (оно должно быть вызвано RMAssertion ). Это не так, это не WsDualHttpBinding where InstanceContext используется для предоставления контракта обратного вызова, и эти параметры связаны только с данными — значение этих параметров должно быть описано поставщиком услуг.