Точка останова не была достигнута при отладке приложения WCF - PullRequest
0 голосов
/ 20 мая 2019

У меня есть приложение WCF и консольное приложение.

Я опубликовал приложение WCF в отдельной папке. Добавлено виртуальное приложение в IIS.

В консольном приложении я добавил ссылку на сервис на сайт, добавленный в IIS.

При этом я не могу отладить приложение WCF, и точка останова не достигает.

Я открыл два экземпляра VS. В одном случае я выполнил приложение WCF, а в другом - консольное приложение.

Почему точки останова WCF не срабатывают?

1 Ответ

2 голосов
/ 20 мая 2019

Нет необходимости публиковать приложение WCF вручную в IIS для целей разработки / отладки. Хостинговая часть уже встроена в Visual Studio.

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

Способ 1. Использование справочника услуг

Это самый быстрый подход, который в большинстве случаев работает «из коробки» (вы выбрали этот).

Вам нужен файл решения с клиентскими и серверными проектами, похожим на этот:

enter image description here

В диалоговом окне «Добавление справочника услуг» нажмите «Обнаружить». Это будет искать службы WCF в вашем решении (эти службы запускать не нужно).

Примечание: если вы нажмете «Перейти», будет найдена только запущенная служба.

enter image description here

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

enter image description here

Продолжайте добавлять услугу, как всегда ...

Visual Studio автоматически обновит файл app.config клиента.

Если вы запустите только консольное приложение, Visual Studio также запустит службу в фоновом режиме. Вы можете войти в сервисную операцию, нажав F11 без явной установки точки останова.

Способ 2: без использования сервисных ссылок

При нажатии на «Добавить ссылку на службу» будет сгенерирован код на основе текущих контрактов данных. Если вы измените это определение (типы, операции и т. Д.), Вам придется сгенерировать его снова.

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

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

Поскольку VS не знает ни одной ссылки на сервис, вы должны запустить оба проекта самостоятельно. Просто установите несколько проектов запуска в вашем решении и нажмите F5. Но в этом случае вам необходимо установить точку останова в приложении-службе.

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