我在一个.NET Core应用程序中使用WCF连接的服务。 我正在使用自动生成的代码,其中包含wsdl定义。
目前,在请求XML的顶部包含以下行:
由于我无法在请求/客户端对象的配置选项中找到更改消息的选项,因此我已尝试使用以下代码更改消息:
目前,在请求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对象仍然使用utf-16编写xml声明。我可以在调试时在监视窗口中看到它。
有没有想法如何实现这个(应该是)简单的更改将非常赞赏。