У меня есть служба, связанная с WCF, в основном приложении .net.Я использую код, который автоматически генерируется с использованием определения wsdl.
В настоящее время в верхней части запроса xml находится эта строка:
<?xml version="1.0" encoding="utf-16"?>
Я могуне могу найти простой способ изменить эту кодировку на UTF-8 при отправке запроса.
Так как я мог найти вариант конфигурации объектов запроса / клиента, я попытался изменить сообщение с помощью следующего кодав IClientMessageInspector.BeforeSendRequest
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
// Load a new xml document from current request
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(request.ToString());
((XmlDeclaration)xmlDocument.FirstChild).Encoding = Encoding.UTF8.HeaderName;
// Create streams to copy
var memoryStream = new MemoryStream();
var xmlWriter = XmlWriter.Create(memoryStream);
xmlDocument.Save(xmlWriter);
xmlWriter.Flush();
xmlWriter.Close();
memoryStream.Position = 0;
var xmlReader = XmlReader.Create(memoryStream);
// Create a new message
var newMessage = Message.CreateMessage(request.Version, null, xmlReader);
newMessage.Headers.CopyHeadersFrom(request);
newMessage.Properties.CopyProperties(request.Properties);
return null;
}
Но объект newMessage по-прежнему записывает объявление xml, используя utf-16.Я вижу это во время отладки в окне наблюдения, поскольку.
Любая идея о том, как выполнить это (должно быть) простое изменение, будет очень цениться.