Отладка службы WCF, размещенной в локальных IIS, не работает

У меня есть одно решение WCFSampleSolution, и у него есть все мои проекты - веб-служба, клиент и веб-сайт. Структура что-то вроде:

  • WCFSampleSolution
    • C:WCFSampleWebsite
    • wcfservice в
    • WCFWebClient

Я создал проект WCFService для своих служб. Он содержит файл iservice1.cs и Service1.цезий. Затем я разместил службу в IIS. Я сделал это, создав сайт и добавляя .ВПВ и web.файлы конфигурации для проекта веб-сайта. Затем опубликовал его в IIS. Когда я запускаю http:MyMachineNameWebsiteService.svc, он показывает описание службы. Затем я создаю веб-клиент, который вызывает веб-сервис. Я использовал ссылку на службу, чтобы добавить службу. Он вызывает метод Service1. Работает отлично. Но я не могу отладить эту программу / настройку. Я проверил файлы конфигурации в проекте WCFWebClient и проекте веб-сайта, и у них есть правильные настройки отладки.

<compilation debug="true">

Я положил точки останова, но контроль никогда не переходит на мою службу seb. Я также попробовал процесс attach, но он также не работает. Но я смог отладить один из моих других проектов WCF. Обстановка немного изменилась. В этом проекте я скопировал .svc-файл и конфигурация в моем веб-клиенте, и отладка работает нормально.

пожалуйста, помогите!!

3 ответов


вы размещаете свою службу на IIS, поэтому я уверен, что вы должны подключаться к w3wp.процесс exe. При попытке прикрепить, если VS встроенный веб-сервер запускается, затем присоединитесь к этому процессу.


что я нахожу особенно простым, это два экземпляра visual studio open (особенно если вы используете NUnit или делаете что-либо для тестирования кода). Один прикрепит NUnit или что угодно, а другой прикрепит w3wp.процесс exe. Самый простой способ:

1) поместите точку останова в 1-й экземпляр visual studio кода прямо перед тем, как он попадет в службу WCF, размещенную на вашем компьютере.

2) Как только код остановится в точке останова, установите точки останова во 2-м экземпляре visual studio, где вы хотите сломать, затем присоедините w3wp.процесс exe.

3) Как только вы продолжите, точка останова в сервисном коде должна быть нажата.

иногда легче найти идентификатор процесса, а также при подключении w3wp.исполняемый. С помощью IIS можно перейти в раздел "рабочий процесс" и найти идентификатор процесса для присоединения к имени пула приложений.


@user465876-другой подход, который является менее хлопот можно найти здесь:WCF больше не может входить в локально размещенную службу-почему бы и нет?