读取正文时出错:System.Xml.XmlException:'���Z��m'包含无效的UTF8字节

时间:2016-11-21 13:49:19

标签: c# .net wcf utf-8 wcf-binding

我正在开发一个WCF服务,我在其中使用IDispatchMessageFormatter创建自定义MessageFormatter。

在某种程度上,我在反序列化之前编辑了来自客户端的请求消息。

public void DeserializeRequest(Message message, object[] parameters)
{
    try
    {
        RequestMessage objRequestMessage = new RequestMessage(message);
        Message objNewMessage = objRequestMessage.RecreateMessage();
        this.objMessageFormatter.DeserializeRequest(objNewMessage, parameters);
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

它适用于所有客户端,但是对于其中一个客户端不起作用。

当客户端发送请求并调用DeserializeRequest方法时,在DeserializeRequest的参数中,Message类的对象名为message

其中原始请求未来,但它给了我以下消息。

  

{...阅读正文时出错:System.Xml.XmlException:'���Z��m'包含   无效的UTF8字节。 ...}

即使在我的代码执行之前,它也会给出上述消息,即使DeserializeRequest方法的第一行没有被执行。

我认为必须是客户端和服务器使用的编码类型不匹配。

服务

[ServiceContract(Namespace = "http://my-wcf.com/WepAPI")]
[XmlSerializerFormat]
public interface IWWRSPFWebAPIMFPService
{
    [OperationContract(Action = "http://my-wcf.com/WepAPI#SayHello")]
    [CMessageBehavior]
    HelloReponse SayHello(HelloRequest helloRequest);
}

的app.config

<?xml version="1.0"?>
<configuration>  
  <system.web>
    <compilation debug="true" targetFramework="4.6.2"/>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>
  <system.serviceModel>    
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>          
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https"/>
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>    
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

0 个答案:

没有答案