WCF с обнаружением завершается ошибкой, поскольку сокет недействителен в своем контексте в XP?

Я пытаюсь использовать механизм обнаружения WCF в .NET 4.0. Он работает в Windows 7, но не работает на компьютере с XP из-за исключения сокета, говорящего, что «запрошенный адрес недействителен в его контексте» (конечная точка — soap.udp://239.255.255.250:3702).

Является ли Windows 7 против XP отвлекающим маневром? netstat, похоже, не показывает никаких конфликтов. Что мне здесь не хватает?

Я создал упрощенную тестовую службу, которая показывает проблему, используя следующую конфигурацию:

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata/>
          <serviceDiscovery />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior>
          <endpointDiscovery />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="HelloWorldService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/Demo"/>
          </baseAddresses>
        </host>
        <endpoint kind="mexEndpoint" />
        <endpoint kind="udpDiscoveryEndpoint" />
        <endpoint contract="Test.IHelloWorld" 
                  address="/Hello" 
                  binding="basicHttpBinding" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

person Russ    schedule 22.01.2011    source источник


Ответы (2)


Ошибка зарегистрирована на Microsoft Connect. К сожалению, в настоящее время нет обходного пути, и ответ Microsoft

Упомянутое вами исключение обычно возникает при попытке привязать сокет к недействительному IP-адресу. Не могли бы вы проверить это и, если возможно, попробовать на машине с другой ОС. В настоящее время нет известных ограничений функции обнаружения WCF в XP.

person Sam B    schedule 22.01.2011
comment
Это неприятно похоже на то, что я вижу. Это, вероятно, ответ, но я не буду отмечать это как таковой, надеясь на более счастливый конец! - person Russ; 23.01.2011
comment
@Russ: Я надеюсь, что вы получите решение этой проблемы ... Я чувствую, что есть проблема, и MS должна будет выпустить HotFix. Я предлагаю вам опубликовать сообщение в Microsoft Connect, чтобы хотя бы другой человек сообщил о проблеме. Удачи :) - person Sam B; 23.01.2011
comment
На самом деле это не ответ как таковой, но, скорее всего, я получу хорошую зацепку. Спасибо! - person Russ; 23.01.2011

Находится ли компьютер XP за брандмауэром или маршрутизатором? Чтобы быть конкретным, действительно ли адрес 239.255.255.250 принадлежит машине с XP или он действительно использует адрес NAT? Попробуйте запустить ipconfig, чтобы узнать, что он думает.

person Chris Wenham    schedule 22.01.2011
comment
Машина XP находится за маршрутизатором. IP-адрес машины (из ipconfig) — 192.168.1.104. Не знаю, к чему вы клоните, но я попробую почти все! Я думал, что адрес 239.255.255.250 был широко известным многоадресным адресом для обнаружения служб? - person Russ; 23.01.2011
comment
Я сам не уверен, на самом деле, но это была догадка. Хотя я не думаю, что мой ответ является реальным решением, если бы у меня была такая же проблема, это был бы мой первый вывод. - person Chris Wenham; 23.01.2011