WCF больше не может входить в службу, которая размещается локально - почему нет? - PullRequest
17 голосов
/ 20 августа 2009

У меня есть тестовая служба WCF и тестовый клиент в одном решении. Служба настроена для запуска на локальном хосте (т. Е. "http://localhost:8731/Design_Time_Addresses/MyService/Service"). Я запускаю клиентское приложение, и оно правильно вызывает службу и возвращает правильный ответ. Я проверил в журналах, что она определенно работает на локальной службе к моей машине. Тем не менее, я не могу отладить в сервисе при запуске клиента. Предполагается, что WCF позволяет просто проходить через него, но ни одна точка останова на службе не попадает, и вмешательство в вызов службы также не работает. Кто-нибудь когда-нибудь видел это?

Я проверил все очевидные вещи типа "генерируется ли файл PDB?" -- Да, это. Если я запускаю сервисный проект сам по себе, а затем запускаю его с помощью некоторого тестового клиента, точки останова попадают правильно. Так что отладка на сервисе работает. Я даже могу явно «подключиться к удаленному процессу» и таким образом отладить сервис. Но WCF не будет автоматически переходить от клиента к сервису.

Ответы [ 9 ]

21 голосов
/ 07 сентября 2010

У меня тоже было такое. Любопытно, что это происходит после внесения изменений в конфигурацию сборки (с x64 до x86). Вот как я смог это исправить:

  1. Щелкните правой кнопкой мыши решение, выберите Свойства.
  2. В разделе «Запуск проекта» переключитесь с «Один запускаемый проект» на «Несколько запускаемых проектов».
  3. Установите для действия «Пуск» для проекта WCF.

Несмотря на то, что я размещаю проект на локальном сервере IIS (не на сервере разработки VS), это решает его, что немного озадачивает. Я подозреваю, что установка проекта на «Пуск» также заставляет VS присоединяться к процессу для отладки.

http://msdn.microsoft.com/en-us/library/bb157685.aspx

4 голосов
/ 15 октября 2012

Для мультиконфигураций Visual Studio:

На страницах свойств вашего решения убедитесь, что для «Конфигурации» вашего веб-сервиса задано «Отладка», а не «Выпуск».

3 голосов
/ 21 августа 2009

Используете ли вы функцию автоматического размещения службы WCF в Visual Studio?Вы можете проверить это, открыв свойства вашего проекта службы WCF и перейдя на вкладку «Параметры WCF».Установлен ли флажок Запуск узла службы WCF при отладке другого проекта в том же решении ?Если это так, то это объясняет проблему.

То, что происходит, заключается в том, что при запуске клиента создается отдельный процесс для автоматического размещения службы WCF.Поскольку это отдельный процесс, вы не сможете «вмешаться» в него при отладке вашего клиента.Вам нужно будет запустить два отдельных сеанса отладки, один для вашей службы и один для вашего клиента.

Простой способ сделать это - вызвать System.Diagnostics.Debugger.Break () вЛогика запуска для вашего сервиса.Когда ваша служба автоматически запускается узлом службы WCF, вам будет предложено отладить ее, что позволит вам открыть второй экземпляр Visual Studio для сеанса отладки.

1 голос
/ 14 июня 2018

В моем случае я опубликовал его, используя конфигурацию выпуска. Вам нужно выбрать Debug здесь.

enter image description here

1 голос
/ 13 апреля 2013

Еще одной причиной отказа от службы WCF может быть размер ваших данных, передаваемых в методы WCF.

Например, я передавал массив dobules размером 1000 и получал ошибку неверного запроса (400), увидев, как работает метод. Я сделал размер 500, и теперь он отлаживает WCF.

1 голос
/ 12 сентября 2012

Кроме того, при использовании отладки VS и присоединении его к процессу w3wp.exe, когда у вас есть определенные привязки портов, отличные от http: 80: *, вы должны иметь web-сайт debug> в VS, установленный на сайт, и порт http работает.

0 голосов
/ 17 апреля 2012

Да, у меня та же проблема, WCF использует другие процессы.

Наконец-то я нашел способ: сначала запустить новый экземпляр (отладка-> запустить новый экземпляр) службы WCF, а затем запустить на стороне клиента, когда точки останова в службе WCF попадут!

0 голосов
/ 19 января 2011

@ msulis - да, спасибо, это исправило это для меня. Я также недавно изменил целевой процессор с любого на x86. Я не мог ответить на ваше сообщение по какой-то причине, поэтому извиняюсь, если это звучит как «ответ».

0 голосов
/ 13 января 2011

У меня была похожая проблема. WCF на хосте Сервисный хост WCF , запросы проверены на Тестовый клиент WCF . Моя проблема была вызвана пробелом в имени конфигурации сборки . Как только я использовал имя конфигурации без пробелов, отладка работала.

Полагаю, что настоящей проблемой была выходная папка сборки, заканчивающаяся папкой с именем конфигурации.

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