2016-12-12 2 views
0

В настоящее время я работаю над клиент-серверной программой, использующей wshttpdualbinding для связи в vs с C#. Поэтому я вызываю webservices по этой привязке с сервера.wsDualHttpBinding не отправляет запрос на сервер

Все прошло отлично, но в последние дни я столкнулся со следующей проблемой: если я вызываю услугу с сервера, клиент просто перестает работать и перестает реагировать. Ничто не посылает от клиента.

Я не могу отправить много, потому что это большой проект, но я буду стараться размещать лучшие фрагменты:

связывания:

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_AuthenticationService" closeTimeout="03:10:00" 
     openTimeout="03:10:00" receiveTimeout="03:10:00" sendTimeout="03:10:00" 
     bypassProxyOnLocal="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
     useDefaultWebProxy="true" allowCookies="false" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" > 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" 
      realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
    <wsDualHttpBinding> 
    <binding name="WSDualHttpBinding_Service" closeTimeout="03:10:00" 
     openTimeout="03:10:00" receiveTimeout="03:10:00" sendTimeout="03:10:00" 
     bypassProxyOnLocal="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
     useDefaultWebProxy="true" messageEncoding="Text" textEncoding="utf-8" > 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     <message clientCredentialType="UserName" algorithmSuite="Default"/> 
     </security> 
    </binding> 
    </wsDualHttpBinding> 
</bindings> 

проблема вызывает код:

Clusterrationalemapping cr = new Clusterrationalemapping 
{ 
    Textbricks = rationale, 
    Cluster = cluster, 
    Project = CurrentProject 
}; 
var clusterrationaleId = 0; 
if (cluster.AddClusterRationaleMapping(cr)) 
{         
    clusterrationaleId = _service.SaveItem(cr); 
    cr.Id = clusterrationaleId; 
    if(rationale.Clusterrationalemappings == null) rationale.Clusterrationalemappings = new List<Clusterrationalemapping>(); 
    rationale.Clusterrationalemappings.Add(cr); 
} 

Вызывается функция, которая создает новый clusterrationalemapping для конкретного кластера. Переменные rational и CurrentProject всегда одинаковы. просто кластер отличается. В большинстве случаев все работает и service.SaveItem возвращает новый Id, как ожидалось. Но для одного специального кластера он не работает. service.SaveItem просто останавливает и замораживает инструмент, пока я не получу какое-то исключение (сервер не ответил вовремя/не дал ответа).

Уверен, что wsDualHttpBinding настроен правильно. Если я прокомментирую строку Project = CurrentProject и замените ее на Project = new Project();, все будет отлично работать для этого кластера.

Похоже, что clusterrationalmapping может стать слишком большим для отправки. Но исключение не говорит об этом. И я получил его с сервера - с этого направления он работал.

Я использовал средство отслеживания трассировки Microsoft для цели отладки, и я вижу, что он мгновенно выдает исключение, которое невозможно достичь конечной точкой. Поэтому я уверен, что служба сериализует объект.

Есть ли способ отладки в службе, чтобы узнать, когда именно, или лучше, почему это не удается?

Заранее за вашу помощь.

ответ

0

Поскольку я не смог найти решение - я все еще думаю, что возникла проблема с сериализатором и слишком большим/вложенным классом, я изменил привязку к nettcp и теперь работает.