В настоящее время я работаю над клиент-серверной программой, использующей 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 для цели отладки, и я вижу, что он мгновенно выдает исключение, которое невозможно достичь конечной точкой. Поэтому я уверен, что служба сериализует объект.
Есть ли способ отладки в службе, чтобы узнать, когда именно, или лучше, почему это не удается?
Заранее за вашу помощь.