小编seb*_*a.p的帖子

WCF 将消息编码从 Utf-16 更改为 Utf-8

我在 .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); …
Run Code Online (Sandbox Code Playgroud)

wcf utf-8 .net-core

5
推荐指数
1
解决办法
3404
查看次数

标签 统计

.net-core ×1

utf-8 ×1

wcf ×1