seb*_*a.p 5 wcf utf-8 .net-core
我在 .net core 应用程序中有一个 WCF 连接服务。我正在使用采用 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;
}
Run Code Online (Sandbox Code Playgroud)
但newMessage对象仍然使用utf-16编写xml声明。从那以后我可以在监视窗口调试时看到它。
任何关于如何完成这个(应该是)简单的改变的想法都将非常感激。
您使用哪种绑定来创建通信通道?CustomBinding 中包含的 textmessageencoding 元素通常包含 TextEncoding 属性。
https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/wcf/textmessageencoding
WriteEncoding 属性指定用于在绑定上发出消息的字符集编码。有效值为
默认为 Utf8TextEncoding。该属性的类型为编码。至于具体的绑定,它也包含textEncoding属性。
https://learn.microsoft.com/en-us/dotnet/api/system.servicemodel.basichttpbinding.textencoding?view=netframework-4.0
如果有什么我可以帮忙的,请随时告诉我。
| 归档时间: |
|
| 查看次数: |
3404 次 |
| 最近记录: |