Отладка службы WCF, вызываемой службой Windows в C # - PullRequest
3 голосов
/ 14 января 2010

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

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

    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?

Ответы [ 2 ]

1 голос
/ 14 января 2010

Есть несколько способов сделать это.

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

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

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

0 голосов
/ 14 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...