Я разработал службу WCF, ответ которой такой:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <getNameResponse xmlns="http://tempuri.com/"> <name>4</name> </getNameResponse> </s:Body> </s:Envelope>
Но мне нужен ответ в следующем формате -
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <a:getNameResponse xmlns:a="http://tempuri.com/"> <name>4</name> </a:getNameResponse> </s:Body> </s:Envelope>
Можно ли настроить службу WCF для достижения этого поведения?
Да, вы можете сделать это - я написал о настройке префиксов для служб WCF на http://blogs.msdn.com/b/carlosfigueira/archive/2010/06/13/changing-prefixes-in-xml-responses.aspx. Однако обратите внимание, что два ваших ответа не эквивалентны - в первом элементе <name> находится в пространстве имен "http://tempuri.org/",, а во втором - в пустом (" ") пространстве имен. Если это действительно то, что вам нужно, вы можете рассмотреть возможность использования контракта сообщений для изменения пространства имен элементов тела.
<name>