Сначала я запустил своего подписчика на службу WCF и приступил к публикации публикации от моего издателя. Мой подписчик может получить сообщение.
Во-вторых, я закрыл своего первого подписчика и снова открыл его, чтобы подписаться на ту же услугу, которая называется так называемым ВТОРОМ подписчиком, подписавшимся на услугу. И еще раз, он может получать сообщения.
Как только я повторю это в третий раз, будет исключение
Сообщение не может быть передано в течение отведенного времени: 00:01:00. В окне передачи надежного канала не было свободного места. Время, отведенное для этой операции, могло быть частью более длительного времени ожидания.
Резюме:
- На первом клиенте, ПОДПИСАНО, все отлично работает
- закрывает первый клиент
- На бесшумном СНОВА (имеется ввиду второе соединение на том же сервисе (?)) Все отлично работает
- Закрывает "второй клиент"
- Открывает клиент ТРЕТЬЕ время, возникает ошибка
Из того, что я исследовал до сих пор, я видел, что в этом вопросе упоминается, что предел соединения по умолчанию равен 2?
Регулирование службы WCF
Это проблема, которая вызывает мою ошибку? Если да, можно ли настроить ограничение соединения и как?
Довольно новенький в области WCF и приветствую любого, кто выскажет мне свое мнение.
Спасибо!
EDIT
Попробовал использовать UseSynchronizationContext = false на моем клиенте. Поскольку каждый раз, когда отправляется сообщение, мой метод PostReceived () для моего подписчика включает в себя открытие всплывающей формы окна, содержащей информацию о публикации. При использовании UseSynchronizationContext = false форма окна не сможет правильно открыться (ошибка здесь).
У кого-нибудь есть идеи, как это исправить, или есть альтернативные решения?
РЕДАКТИРОВАТЬ 2
Читал много материалов, связанных с WCF-подключением, и обнаружил, что большинство людей пытаются переключить переменную maxConnections или связанные с ними в своих конфигурационных файлах. Мой вопрос - единственные файлы конфигурации, которые у меня есть, находятся в моем клиенте и ни один для моего Сервисного проекта Нужно ли мне добавлять конфигурационный файл для моего сервисного проекта?
Поскольку «предел подключения» (?) Равен 2, я попытался отменить его, когда клиент выходит из приложения, но это не работает и выдает ошибку. Я отправил вопрос об ошибке, которую получил.
https://stackoverflow.com/questions/8395525/objectdisposedexception-on-wcf-service
Добавлены коды конфигурации для клиентской стороны:
<system.serviceModel>
<diagnostics performanceCounters="All" />
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IPostingContract" clientBaseAddress="http://localhost:8000/wcfClient/" closeTimeout="00:01:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8888/PostingContract/Posting"
binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IPostingContract"
contract="IPostingContract" name="WSDualHttpBinding_IPostingContract">
<identity>
<userPrincipalName value="##" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Кто-нибудь посоветует мне, если я сделал что-то не так для моей служебной части в отношении поведения или файлов конфигурации. Цените миллион. Спасибо!
РЕДАКТИРОВАТЬ 3
Управляйся служебным поведением. Для поведения я изменил InstanceContextMode на одиночный.
InstanceContextMode = InstanceContextMode.Single
и это фактически позволило мне запустить более 2 подключений моего приложения Windows Form. Однако, если я это сделаю, если я предварительно запустил 2 соединения, для третьего соединения он получит 3 всплывающих окна, а затем для четвертого соединения - 4. Когда предполагается получить 1.