Пользовательский ответ службы WCF

#wcf #wcf-binding #wcf-ria-services

#wcf #wcf-привязка #wcf-ria-services

Вопрос:

Я разработал демонстрационную службу WCF с BasicHttpBinding, и я получаю ответ WCF как коллега —

 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">    
<s:Body>       
<TestResponse xmlns="http://tempuri.org/">          
<TestResult>hi Test</TestResult>       
</TestResponse>    
</s:Body> 
</s:Envelope>
  

Но мне нужен ответ WCF в следующем формате-

 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">    
<s:Body>       
-->><t:TestResponse xmlns:t="http://tempuri.org/">
<TestResult>hi Test</TestResult>       
</TestResponse>    
</s:Body> 
</s:Envelope>
  

итак, что я могу сделать, чтобы получить этот ответ??

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

1. …пишу Generic Http Handler … на самом деле ваш ответ даже не будет действительным xml …

2. разве это не может быть достигнуто с помощью какой-либо конфигурации wcf??

Ответ №1:

Обратите внимание, что два полученных вами ответа не эквивалентны: в первом элемент <TestResult> находится в tempuri.org / пространство имен, в то время как во втором оно используется по умолчанию («») (вам также нужно будет добавить к TestResult префикс «t:», чтобы сохранить ту же семантику XML. Для достижения этой цели в WCF нет ничего, что могло бы сделать это из коробки, но вы можете изменить это самостоятельно, используя одну из многих точек расширения платформы. Взгляните на http://blogs.msdn.com/b/carlosfigueira/archive/2010/06/13/changing-prefixes-in-xml-responses.aspx который имеет дело именно с этим.