Поделиться через


Ограничения на отладку WCF

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

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

  • Отладка клиентского процесса, который отправляет запрос службе. Служба должна быть частью решения.

  • Использование диалогового окна Присоединение к процессу для присоединения текущей работающей службы. Отладка начинается внутри службы.

В этом разделе описаны ограничения на применение данных сценариев.

Ограничения на выполнение шага с заходом в службу

Чтобы выполнить шаг с заходом в службу из отлаживаемого клиентского приложения, необходимо соблюдать следующие условия.

  • Для вызова службы клиент должен использовать синхронный клиентский объект.

  • Операция контракта не может быть односторонней.

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

  • В файле app.config или Web.config должна быть включена отладка с помощью показанного ниже кода.

    <system.web>
      <compilation debug="true" />
    </system.web>
    

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

Ограничения на выполнение шага с выходом из службы

В отношении выхода из пошагового выполнения службы и возвращения к клиенту действуют те же ограничения, что и для шага с заходом в службу. Кроме того, отладчик должен быть присоединен к клиенту. Если во время отладки клиента производится шаг с заходом в службу, отладчик остается присоединенным к службе. Это справедливо как в случае запуска клиента с помощью команды Начать отладку, так и в случае присоединения к клиенту с помощью диалогового окна Присоединение к процессу. Если отладка начинается путем присоединения к службе, отладчик больше не будет присоединен к клиенту. В таком случае при необходимости выхода из пошагового выполнения службы и возвращения к клиенту необходимо сначала присоединиться к клиенту вручную, используя диалоговое окно Присоединение к процессу.

Ограничения на автоматическое присоединение к службе

Автоматическое присоединение к службе имеет следующие ограничения:

  • Служба должна быть частью решения Visual Studio, отладку которого вы выполняете.

  • Служба должна быть размещена. Служба может быть частью проекта веб-сайта (файловая система или HTTP), проекта веб-приложения (файловая система или HTTP) или проекта библиотеки служб WCF. Проекты библиотеки служб WCF могут быть либо библиотеками служб, либо библиотеками служб рабочих процессов.

  • Обращение к службе должно производиться из клиента WCF.

  • В файле app.config или Web.config должна быть включена отладка с помощью показанного ниже кода.

    <system.web>
      <compilation debug="true" />
    <system.web>
    

Резидентное размещение

Локальная служба — это служба WCF, которая не запускается внутри IIS, узла службы WCF или ASP.NET Development Server. Сведения об отладке локальной службы см. в статье "Практическое руководство. Отладка локальной службы WCF".

Если появится сообщение об ошибке "Не удается автоматически выполнить шаг в сервер". Восстановите установку Visual Studio, чтобы попытаться устранить эту проблему. Это может произойти при установке Visual Studio перед установкой ASP.NET.