2010-09-19 2 views
0

У меня есть клиент WCF с настраиваемым поведением, которое перехватывает запрос SOAP. В BeforeSendRequest в клиенте я получаю запрос SOAP и передаю его другому параметру WS. Другой WS помещает SOAP-конверт в реальную службу, которую клиент хочет вызывать и возвращает ответ SOAP обратно клиенту. Таким образом, в BeforeSendRequest промежуточная служба возвращает реальный ответ SOAP в виде строки обратно клиенту.set Response to client from SOAP Envelope

public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel) 
{ 
    string soapResponse = myotherProxy.CallService(request.ToString()); 
    return null; 
} 

Как установить возвращаемый ответ SOAP (soapResponse) в качестве реального ответа в клиенте?

Надежда кто-то может помочь :)

Спасибо, Adrya

ответ

1

Вы можете сохранить «» soapResponse переменной члена инспектора и установить его обратно в afterReceiveReply.

Но почему вы вообще притворяетесь, что звоните в службу? Не могли бы вы просто позвонить другой службе? И не нужно делать инспектор?

+0

Спасибо :) но как установить этот SOAPEnvelope, который приходит как строка в ответ, который является сообщением? Я должен сделать это так, потому что это то, что проект ... (отправляет сообщения от разных клиентов в разных службах, но перед отправкой его в myotherProxy.CallService он выполняет некоторые проверки и разрешает только вызов, если проверки в порядке) – Adrya

+0

Не могли бы вы сделать ваш метод CallService возвращает SOAP-сообщение? Или вы можете попытаться сделать сообщение из мыльной строки. (см. http://msdn.microsoft.com/en-us/library/system.web.services.description.message(v=VS.90).aspx) – JamesMLV