Как отлаживать программы WCF - PullRequest
17 голосов
/ 06 января 2012

Мой код использует много вызовов WCF, и когда я пытаюсь его отладить, он не переходит к самому коду сервиса. Есть ли способ как-то отладить код WCF?

Ответы [ 7 ]

19 голосов
/ 19 февраля 2013

Есть намного более простой способ.Просто запустите несколько процессов в Visual Studio.Щелкните правой кнопкой мыши Решение.Нажмите Свойства.Выберите Startup Project.Нажмите «Несколько проектов запуска».Установите для проектов WCF и клиента значение Action = Start.Теперь вы пройдете через WCF, а также через клиента.

18 голосов
/ 06 января 2012

Вам необходимо подключить отладчик к процессу, в котором запущена ваша служба wcf.

Если в iis вам необходимо подключиться к соответствующему процессу w3p.exe.

Если вы используете автономное приложение или службу Windows, добавьте имя вашего exe-файла.

В Visual Studio в меню отладчика есть «присоединить к процессу». Откройте соответствующий код, установите точку останова и вызовите службу, вызывающую выполнение этого пути кода.

Помимо отладки, использование трассировки .net с переключаемыми уровнями - хороший способ понять, что происходит. Обычно я настраиваю sys internals debugview для выделения ошибок и предупреждений цветом и постоянно запускаю его при выполнении кода или тестов. Цветные линии из моего периферийного зрения во время работы находят проблемы.

13 голосов
/ 06 января 2012

Если вы хотите отследить активность WCF, чтобы убедиться, что трафик генерируется в правильном порядке, я бы порекомендовал один из следующих подходов:

1) Используйте fiddler для просмотра трафика WCF.

2) Используйте прослушиватель трассировки WCF для мониторинга реальных вызовов WCF. Это очень полезно при попытке определить причины сбоя сериализации. Вы можете включить это, добавив следующий блок в блок конфигурации вашего web.config:

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="c:\log\WebTrace.svclog"  />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

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

4 голосов
/ 06 января 2012

Чтобы отладить службу WCF в Visual Studio 2010, выберите «Отладка -> Присоединить к процессу». Установите флажок «Показывать процессы от всех пользователей» и выберите w3p.exe, если вы используете IIS, или имя приложения, если нет. Поставьте точку останова, сделайте вызов, и тогда вы сможете начать отладку.

Если это веб-приложение (я бы порекомендовал это), вы можете щелкнуть правой кнопкой мыши по проекту, перейти на вкладку "Веб" и в разделе "Действие запуска" выбрать "Не открывать страницу, дождаться запроса от внешнего приложения". ». Сохраните и закройте этот параметр, затем просто нажмите F5, чтобы начать отладку.

2 голосов
/ 06 января 2012

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

0 голосов
/ 14 мая 2017

В моем случае я устанавливаю сайт WCF как StartUp Project в Visual Studio и непосредственно запускаю WCF в режиме отладки,

элемент WCF в обозревателе решений Visual Studio выглядит следующим образом:

enter image description here

после запуска WCF в браузере появится новая веб-страница, и ее URL будет выглядеть как http://xxxx:xxport/Service.svc, скопируйте этот uri и используйте его в другой программе, которая вызывает этот WCF,

затем установите точку останова в методе, который вызывает программа, точка останова будет успешно введена при выполнении программы.

0 голосов
/ 06 января 2012

При запуске приложения, которое обращается к службам WCF, часто задействуются два процесса

  • Клиентский процесс, который обращается к службе WCF
  • Процесс сервера, на котором размещается служба WCF

Похоже, вы отлаживаете процесс клиента. Чтобы просмотреть действительный код службы WCF, необходимо подключить отладчик Visual Studio к процессу, в котором размещается служба, и установить точку останова в коде.

Примечание. Visual Studio может подключаться к нескольким процессам одновременно, поэтому вы можете отлаживать код клиента и сервера в одном сеансе. Используйте

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