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 に答える