2013-09-05 5 views
1

Я столкнулся с смешной проблемой с сериализацией ответа WCF. После нескольких запросов (скажем, 10), WCF начинает смешивать запросы и всегда после 128-го символа при использовании кодировки Utf8.Смешайте два ответа

Ожидаемый ответ:

<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)] 

Любые идеи?

+0

Почему ваш элемент XML-документа 'via'? Кроме того, вы пробовали Fiddler, чтобы узнать, является ли ответ от службы тем, что искажено, или существует ли прокси-сервер между вашим клиентом и сервером? –

+0

Да. Скрипач показывает мне эти плохие отзывы. –

ответ

0

Для службы WCF REST по умолчанию и действительный экземпляр InstanceContextMode имеет значение «PerCall».

Либо он должен вызывать ошибку при установке «InstanceContextMode.Single», либо ее следует игнорировать. Но он ведет себя по-другому.

Так что удалите InstanceContextMode и попробуйте, он должен работать.

Смежные вопросы