Генерация клиентского прокси из службы Windows - PullRequest
1 голос
/ 28 марта 2009

Я пытаюсь сгенерировать клиентский прокси из библиотеки служб WCF. Я использую VS2005, .NET 3.0 на рабочей станции Windows XP Pro. Служба WCF размещается в службе Windows. Когда я запускаю службу windows как консольное приложение, проблем не возникает. Я могу запустить svcutil.exe по этому адресу, и он генерирует прокси. Однако, когда я компилирую эту службу в режиме выпуска и устанавливаю ее на рабочую станцию ​​с помощью InstallUtil, я получаю ошибку «Ошибка: невозможно получить метаданные из net.tcp: // localhost: 9090 / Service2». Это настройки, которые я использую app.config для службы

<behaviors>
  <endpointBehaviors>
    <behavior name="Test2">
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="serviceBehaviour">
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceMetadata />
      <!--<serviceMetadata httpGetEnabled="true" />-->
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
    </behavior>
  </serviceBehaviors>
</behaviors>


<bindings>
  <customBinding>
    <binding name="TestBinding2" inactivityTimeout = "00:30:00"  openTimeout="00:30:00"
         receiveTimeout="00:30:00"
         sendTimeout="00:30:00">
      <binaryMessageEncoding />
      <tcpTransport transferMode="StreamedResponse" />

    </binding>
  </customBinding>
</bindings>

1 Ответ

0 голосов
/ 29 марта 2009

Пара снимков в темноте ...

Работает ли ваша служба Windows? Помимо этого, ваша служба WCF работает в службе Windows? Мой проект также содержит службу WCF в службе Windows (вы можете увидеть общие пошаговые инструкции здесь ). Несмотря на то, что у меня служба Windows помечена для автоматического запуска, мне все равно придется запускать ее вручную в первый раз. Возможно, есть опция командной строки InstallUtil.exe, о которой я не знаю, которая сделает это для меня. Но дело в том, что если ваша служба Windows или служба WCF внутри нее не запущены, вы, очевидно, не можете видеть конечную точку MEX.

Другая вещь, которую я заметил. Ваша ошибка говорит о том, что метаданные нельзя получить из net.tcp: // localhost: 9090 / Service2, но базовый адрес, который вы указали в своем комментарии, показывает net.tcp: // локальный: 9090 / Service_2. Возможно, это просто тип-о, но не мешало бы перепроверить, что все написано правильно, особенно если add.config генерируется вручную.

...