Ошибка 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

Другие вопросы по тегам