2010-01-14 2 views
3

У меня есть служба Windows, которая была запланирована с использованием Quartz.NET. Мне нужно его отладить. Поскольку я не могу отлаживать метод start, я помещаю точку останова в метод Execute. Я скомпилировал свое решение и установил эту службу, используя installutil /i Name of the exe. Затем я сделал Attach To Process из меню Debug Visual Studio и приложил к нему EXE.Отладка службы WCF, вызванная службой Windows в C#

Когда эта служба работает, она останавливается в этой точке останова. Код выглядит следующим образом

using OA.FileProcessing.WinService.IngeoServiceReference; 

    public virtual void Execute(JobExecutionContext context) 
    { 
     IngeoClient ingeoclient = new IngeoClient(); 
     ingeoclient.ShowIngeoData(); 
     ingeoclient.UpdateIngeoData(); 
    } 

OA.FileProcessing.WinService.IngeoServiceReference является службой WCF, размещенного на IIS только на моей машине. Отладчик не шаг в:

 ingeoclient.ShowIngeoData(); 

Я попытался добавить aspnet_wp.exe как процесс, но он говорит, что отладчик уже подключен.

Как я могу отладить эту службу WCF от службы Windows?

ответ

1

Есть несколько способов, которыми вы могли бы это сделать.

Одним из способов было бы создание проекта консольного приложения и ссылка на exe проекта службы (так же, как вы ссылались бы на DLL). Создайте макет JobExecutionContext и вызовите Execute из приложения Console. Настройте Visual Studio для запуска как службы WCF, так и модного консольного приложения: В обозревателе решений щелкните правой кнопкой мыши имя решения. Нажмите «Задать проекты запуска». В диалоговом окне «Свойства решения» выберите «Несколько проектов запуска».

Запустится как приложение режима консоли, так и приложение WCF в режиме отладки. Приложение консоли вызывает метод Windows Service Execute, который, в свою очередь, вызывает вашу службу. Поскольку все выполняется в режиме отладки, у вас не должно быть проблем с точками останова.

Другой вариант - установить службу WCF как проект запуска, запустить его из визуальной студии в режиме отладки, а затем настроить службу Windows для подключения к ней. С помощью этого метода вы не сможете пройти через службу Windows, но ваши точки останова в службе WCF должны работать.

+0

Я хочу пойти со вторым методом, как и все бизнес-логики в бизнес-слое, который открывается через службу WCF. Как настроить службу Windows для подключения к службе WCF. – Rohit

+0

Задайте себе, как изначально была настроена служба Windows для подключения к службе WCF. Если вам нужна эта конфигурация, вам нужно изменить ее для отладки. Чтобы узнать информацию о конечной точке для вашей службы WCF в режиме отладки: при запуске проекта WCF в режиме отладки есть значок systray, который является хостинговым процессом для службы WCF, и вы можете получить номер порта и другую информацию о конечной точке там. – AaronLS

+0

У меня есть аналогичная проблема, но разница в том, что служба WCF является независимым приложением (WCF и служба Windows не являются частью одного и того же решения). Когда я пытаюсь отладить службу WCF из службы Windows, я получаю сообщение «Невозможно автоматически перейти на сервер. Отладчик уже подключен». Не могли бы вы рассказать об этом. FYI Служба WCF размещается в экспресс-службе IIS – Hari

0

Лучше запустить сервер, размещенный в IIS из Visual Studio Selfhost, в режиме отладки и использовать его в службе Windows и отлаживать оба самостоятельно.