У меня есть плагин, который предоставляет сервис wcf. если я тестирую этот сервис с помощью WCFStorm, все работает нормально. Я сразу же получаю ответ. Когда я пытаюсь использовать службу из приложения, которое загрузило плагин, у меня появляется тайм-аут.
ProgrammingMaster_ServiceClient aClient = new ProgrammingMaster_ServiceClient();
aClient.Endpoint.Address = new EndpointAddress("http://localhost:8081/ProgrammingMaster/PM_Service");
aClient.BeginProgrammingSession(0x01);
aClient.Close();
Код, который я использую для использования сервиса. ProgrammingMaster_SErviceClient создается программой svcutil.exe.
Я получаю ту же проблему, если уберу строку
aClient.Endpoint.Address = new EndpointAddress("http://localhost:8081/ProgrammingMaster/PM_Service");
Я не совсем уверен, где я должен искать, чтобы начать отладку.
вызываемая служба отправляет сообщение в другую сеть. Когда я звоню через wcfstorm, я вижу сообщение, отправленное службой. так что я знаю, что сервис работает правильно.
Что я делаю неправильно, когда я вызываю службу из своего приложения, которое вызывает тайм-аут.
Редактировать: после истечения времени ожидания (я перехватываю и регистрирую исключение) служба отправляет свое сообщение в другую сеть, как и положено.
Редактировать 2: Надеюсь, это лучшее объяснение.
Итак, у меня есть плагин, который предоставляет веб-сервис и использует другой веб-сервис.
Таким образом, плагин в основном подключается к объекту в специальной сети, а затем передает значения свойств этого объекта, используя веб-сервис.
У меня есть приложение, которое предоставляет веб-сервис, который плагин использует для обновления значений удаленных объектов, и использует веб-сервис, предоставляемый плагином, для передачи команд удаленному объекту.
Нет проблем с таймаутом, когда плагин отправляет обновления в приложение. Я получаю сообщение об ошибке тайм-аута, когда приложение использует веб-сервис для отправки команды удаленному объекту через плагин. После истечения времени ожидания команда выполняется. Таким образом, веб-сервис вызывается успешно. Я думаю, я просто не получаю ответ?
Редактировать 3:
Вот мой файл конфигурации приложения. Я сократил время отправки до 00:00:01, чтобы ожидание не было таким длинным, но мне бы очень хотелось его исправить, чтобы не приходилось каждый раз превышать время ожидания.
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IProgrammingMaster_Service" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:00:01" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="">
<extendedProtectionPolicy policyEnforcement="Never"/>
</transport>
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8081/ProgrammingMaster/PM_Service" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IProgrammingMaster_Service" contract="IProgrammingMaster_Service" name="WSHttpBinding_IProgrammingMaster_Service">
<identity>
<userPrincipalName value="mzjkk7@nam.corp.gm.com"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>