2010-11-15 4 views
3

У меня есть старинный клиент веб-службы, которому необходимо поговорить с моей службой WCF 4.0. Клиент - это большая старая система в другой компании, которая не изменится. У нас есть новые клиенты, которым нужна функциональность WCF, поэтому у нас есть это, но теперь для поддержки старого клиента требуется еще одна работа.Сделать WCF 4 WSDL похожим на веб-службу WSDL?

Я украсил несколько частей службы WCF с помощью атрибутов, и много выпущенных WSDL выглядит как веб-сервис, который раньше звонил древний клиент. У меня есть еще несколько частей, которые не похожи на старые вещи. Где я могу посмотреть, как новый сервер выглядит как старый?

старая (веб-служба) системы:

<wsdl:portType name="QueueServiceSoap"> 
<wsdl:operation name="SubmitRequest"> 
<wsdl:input message="tns:SubmitRequestSoapIn"/> 
<wsdl:output message="tns:SubmitRequestSoapOut"/> 
</wsdl:operation> 
</wsdl:portType> 

Новая система (WCF Service) имеет:

<wsdl:portType name="QueueServiceSoap"> 
<wsdl:operation name="SubmitRequest"> 
<wsdl:input wsaw:Action="https://test.com/SubmitRequest" message="tns:QueueServiceSoap_SubmitRequest_InputMessage"/> 
<wsdl:output wsaw:Action="https://test.com/QueueServiceSoap/SubmitRequestResponse" message="tns:QueueServiceSoap_SubmitRequest_OutputMessage"/> 
</wsdl:operation> 
</wsdl:portType> 

Мне нужно изменить службу WCF, чтобы выглядеть как WS один. .. Помогите?

Спасибо!

+0

Публикация службы привязки здесь, пожалуйста. – Aliostad

+0

Почему, по-вашему, вам нужно изменить WSDL? Должен ли старый клиент читать его? Это вызывает проблемы? Отличаются ли форматы сообщений? Вы действительно не сказали, что случилось. –

ответ

0

Создайте HttpModule, который обрабатывает BeginRequest, используя для прикрепления фильтра ответов, когда WSDL запрашивается для (Request["WSDL"] != null). Фильтр ответов будет классом, который вы пишете, который наследуется от MemoryStream, который соответствующим образом изменит ответ.

Добавить хорошую ссылку для написания Отклик фильтра можно найти на http://www.4guysfromrolla.com/articles/120308-1.aspx

+1

это будет работать для запроса «? WSDL», но не для запроса обмена метаданными. Кроме того, что, если его новая услуга фактически _does_ соответствует его новому WSDL? Ему лучше заставить _service_ соответствовать старому WSDL, прежде чем он будет беспокоиться о том, чтобы _WSDL_ соответствовал старому WSDL. –

Смежные вопросы