Ошибка wsDualHttpBinding в Win7
У меня есть одно приложение сервер / клиент, где сервер размещен на сервере IIS, и многие клиенты будут подключаться к этому серверу IIS. Двойная привязка используется для широковещательной рассылки сообщений от сервера к клиентам.
Я работаю на своей машине с Vista, в которой нет ошибок, однако, когда мы тестируем клиентское приложение на клиентском ПК, использующем Windows 7, я получаю сообщение об ошибке.
Первый раз у меня есть эта ошибка:
HTTP не удалось зарегистрировать URL-адрес http://+:80/Temporary_Listen_Addresses/cc6f2e30-ff08-4bfc-8397-d67630337a9c/ так как TCP-порт 80 используется другим приложением. Исключение обрабатывается в основном потоке пользовательского интерфейса 1.
в соответствии с решением из интернета, я добавил clientBaseAddress в файл конфигурации клиента (без изменений и никогда не добавляю clientBaseAddress в конфигурацию сервера), теперь я получаю вторую ошибку:
HTTP не может зарегистрировать URL http://+:91/NightlyBuild/NonVer/Communication/. Ваш процесс не имеет прав доступа к этому пространству имен (подробнее см. http://go.microsoft.com/fwlink/?LinkId=70353). Исключение обрабатывается в основном потоке пользовательского интерфейса 1.
Хорошо, я нашел некоторые комментарии, в которых говорилось, что нужно запускать клиентское приложение в режиме администратора, я тоже так делаю, я не получаю две предыдущие ошибки, но на этот раз я получаю ошибку тайм-аута после остановки экрана в течение 5 минут.
Ошибка тайм-аута
Операция открытия не была завершена в течение заданного времени ожидания 00:05:00. Время, выделенное для этой операции, могло быть частью более длительного времени ожидания. Исключение обрабатывается в основном потоке пользовательского интерфейса 1.
Ниже приведен конфиг клиента, который я использую, когда сталкиваюсь со второй ошибкой.
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_ICommunicationService"
closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="0" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
clientBaseAddress="http://remote-server:8001/Communication/">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<!--<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>-->
<security mode="None" />
</binding>
Конечная точка в конфигурации клиента:
<client>
<endpoint address="http://remote-server:90/Communication/CommunicationService.svc" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ICommunicationService" contract="CommunicationService.ICommunicationService" name="WSDualHttpBinding_ICommunicationService">
</endpoint>
</client>
Действительно исчерпаны идеи, какие-либо комментарии?
1 ответ
Ошибка клиента "HTTP не удалось зарегистрировать...", поскольку указанный URL-адрес не зарегистрирован для пользователя, под которым вы запускаете процесс.
Для временного решения этой проблемы вы можете использовать программу HTTPNamespaceManager.exe, чтобы изменить список настроек доступа к URL на локальном компьютере. Получите это здесь: Технический блог PaulWh