2

我在 WCF 响应序列化方面遇到了一个有趣的问题。在多次请求(比如说 10 个)之后,WCF 开始混淆请求,并且在使用 Utf8 编码时总是在第 128 个字符之后。

预期响应:

<via version="1.1">
    <response>
        <status code="0" />
        <res-get-balance>
            <balance value="38.65" currency="GBP" />
            <token>IQV2SSc41Fux6zWeaaUOMKtBvYW3IgtDZFJ4r1</token>
        </res-get-balance>
    </response>
</via>

但是我得到了这个作为回应:

<via version="1.1">
    <response>
        <status code="0" />
        <res-get-balance>
            <balance value="38.65" currency="GBP" />
            <token>IQV2SSc41Fux6zWe
                <via version="1.1">
                    <response>
                        <status code="0" />
                        <res-get-balance>
                            <balance value="38.65" currency="GBP" />
                            <token>IQ

当它到达字符编号 128 时,它会从头开始。

这是我的绑定配置:

<webHttpBinding>
    <binding name="webHttpBindingConfig" sendTimeout="05:00:00" ></binding>
</webHttpBinding>

这是我的行为配置:

<behavior name="webXmlOverHttpBehavior">
    <dataContractSerializer maxItemsInObjectGraph="165536" />
    <endpointDiscovery enabled="true" />
    <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Xml" />
</behavior>

我的服务实现具有以下属性:

[ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single)]

有任何想法吗?

4

1 回答 1

0

对于 WCF REST 服务,默认且有效的 InstanceContextMode 仅为“PerCall”。

当设置“InstanceContextMode.Single”时它应该抛出错误,或者它应该忽略它。但它的行为不同。

所以删除 InstanceContextMode 并尝试,它应该可以工作。

于 2014-04-03T19:18:47.343 回答