2011-12-19 2 views
3

У меня уже есть несколько служб WCF + Windows, проверенных и работающих правильно, в качестве службы Windows на удаленных машинах. За исключением одного.Минимальная конфигурация для создания «Добавить служебную ссылку»> «Обнаружение» работы

Чтобы отладить, я попытался разместить WCF (без службы Windows) с помощью встроенного «Добавить служебную ссылку», а затем разместить его в визуальной студии (не знаю, как называется хост).

В любом случае, я не могу получить ссылку «Добавить служебную ссылку», чтобы открыть мои службы.

Поскольку я пользуюсь услугами Windoes, я использую TCP-файлы. Это некоторые вещи, которые я сделал, все в приложении WinForms, что я добавляю ссылку на службу:

Добавить Проект> Свойства> Debug> аргументы командной строки: /client:"WcfTestClient.exe», но ехе Безразлично Не бегай.

И мой App.Config

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
    <client> 
     <endpoint address="net.tcp://localhost:32279/SYNC" binding="netTcpBinding" 
     bindingConfiguration="tcpSyncBindingConfig" contract="Company.Data.Sync.ILocalCacheSyncContract" 
     name="tcpSyncClientEP" /> 
    </client> 
    <bindings> 
     <netTcpBinding> 
     <binding name="tcpSyncBindingConfig" maxReceivedMessageSize="6553600" /> 
     </netTcpBinding> 
     <mexTcpBinding> 
     <binding name="tcpMexBindingConfig" /> 
     </mexTcpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="svcBehavior" name="Company.Data.Sync.Services.LocalCacheSyncService"> 
     <endpoint address="net.tcp://localhost:32279/Sync" binding="netTcpBinding" 
      bindingConfiguration="tcpSyncBindingConfig" name="tcpSyncListenEP" 
      contract="Company.Data.Sync.Services.ILocalCacheSyncContract" /> 
     <endpoint address="net.tcp://localhost:32279/Sync/mex" binding="mexTcpBinding" 
      bindingConfiguration="tcpMexBindingConfig" name="tcpMexEP" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="svcBehavior"> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

Примечание стороны: ServiceOperation возвращаются Microsoft.Synchronization.Data.xxx для примера только шляпы SyncContext. Возможно, мне нужно добавить ссылку в Winforms? Или добавит ли их «Добавить служебную ссылку»? Служба и контракты генерируются шаблоном локального баз данных базы данных. , возможно, не имеет отношения к проблеме.

ответ

4

После отправки сообщения, я продолжал искать ответы, и это то, что я экспериментировал работать: сам

проекта файл например * .csproj для проекта C# должен содержать ProjectTypeGuid для WCF для Visual Studio, чтобы даже начать проверку проекта для Сервисов.

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

Больше Идентификаторы GUID можно найти на http://www.mztools.com/articles/2008/mz2008017.aspx. (Спасибо mztools!)

Проект WCF может иметь несколько сервисов, и каждый из них должен иметь свою конфигурацию, определенную в App.Config проекта. У каждой службы должен быть другой адрес конечной точки mex. Службы также могут использовать одно служебное поведение, которое имеет расширение serviceMetadata. Конечной точке Mex не требуется поведение или привязка конфигурации. Но не забудьте установить mex endpoint contract для IMetadataExhchange.

Для TCP mex для сервисаMetadata> HttpGetEnabled должно быть установлено значение false.

Я считаю, что это минимальные настройки.

0

правой кнопкой мыши на службе вы хотите разместить на вашем компьютере, а затем щелкните правой кнопкой мыши и перейдите Debug> Start New Instance

Тогда пойдите другое приложение (я предполагаю, что такое же решение) и скопируйте URL он работает в ,

Тогда вы можете запустить этот с тем же методом выше и отлаживать оба проекта на своей локальной машине.

Я предполагаю, что это то, что вы пытаетесь сделать. Пожалуйста, дайте мне знать, если это что-то еще.

+0

Этот метод работает только с 1 из 4 dll, которые у меня есть. Существуют ли какие-либо требования к dll? Например, может быть только одна служба в dll?Он дает «тип выходного типа библиотеки классов не может быть запущен ...» – Jake

+0

Он сказал: «В любом случае, я не могу получить ссылку« Добавить службу », чтобы открыть мои службы» – jgauffin

+1

@jgauffin, на самом деле я думал, что получение того или другого на работу сделает как Работа. – Jake

Смежные вопросы