Возврат <bar>foo </bar> вместо <string>foo </string> в методе отдыха WCF - PullRequest
0 голосов
/ 24 апреля 2010

У меня есть веб-метод REST в .NET 3.5:

[OperationContract]
[WebInvoke(UriTemplate = "", Method = Verbs.Get)]
public string GetBar()
{
   return "foo";
}

Ответ форматируется как <string>foo</string>, а я бы предпочел <bar>foo</bar>. Кто-нибудь знает как это сделать? Я чувствую, что упускаю что-то очевидное.

1 Ответ

1 голос
/ 24 апреля 2010

При возврате XML из службы WCF вы обычно используете один из сериализаторов, либо DataContractSerializer, либо XmlSerializer. Мне не удалось заставить DataContractSerializer вернуть то, что вы ищете, но вот один способ, который работает с XmlSerializer.

 [WebGet(UriTemplate = "bar")]
 [OperationContract]
 public bar GetData() {
   return new bar(); 
 }



  [XmlRoot(Namespace = "")]
    public class bar : IXmlSerializable {

        public void WriteXml(XmlWriter writer) {
            writer.WriteString("foo");
        }

        public XmlSchema GetSchema() {
            throw new NotImplementedException();
        }

        public void ReadXml(XmlReader reader) {
            throw new NotImplementedException();
        }

    }

В конце концов я просто перестал пытаться заставить сериализаторы делать то, что хотел, и просто начал возвращать «поток» из моих контрактов и сам генерировать XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...