wcf заставляет символы, спасающиеся в ответ - PullRequest
2 голосов
/ 29 июля 2010


Я хочу вернуть неэкранированный html в ответе WCF, поэтому мне нужно, чтобы раздел CDATA был постоянно включен в ответ.
Я понял, что у меня нет шансов с DataContractSerializer. Поэтому я попытался пометить свою операцию с помощью [XmlSerializerFormat] и реализовать IXmlSerializable в классе ответа. Я вижу, что мой код сериализации вызывается, но тогда он все равно не работает.
Теперь я почти уверен, что WCF каким-то образом анализирует содержимое ответа и заставляет символы, которые там сбегают, жестоко игнорировать мои CDATA. Может быть, я должен пойти дальше и попробовать некоторую реализацию пользовательского поведения. У тебя есть идеи? Tnx заранее.

1 Ответ

1 голос
/ 01 декабря 2010

Я точно не знаю, помогает ли это, но у меня была несколько похожая проблема, когда мне нужно было передать ответ JSON от другого сервиса.

Поскольку WCF, по-видимому, экранирует кавычки и другие символы, что в моем случае явно было нежелательным поведением, мне нужно было просто игнорировать любую помощь от WCF.

Я изменил тип ответа на System.ServiceModel.Channels.Message, а затем создал текстовое сообщение с System.ServiceModel.Web.WebOperationContext.Current.CreateTextResponse(responseText)

Вот и все! Мое сообщение теперь не интерпретируется WCF, и мой ответ JSON не изменяется.

Больше информации здесь: http://msdn.microsoft.com/en-us/library/system.servicemodel.web.weboperationcontext.aspx

...