Невозможно отладить служебное сообщение WCF - PullRequest
31 голосов
/ 24 ноября 2008

У меня есть решение Visual Studio 2008 с сервисом WCF и клиентом.

Когда я запускаю свой клиент и вызываю метод из моей службы, я получаю сообщение «Невозможно автоматически отладить« Home.Service ». Удаленная процедура не может быть отлажена. Обычно это означает, что отладка не была включена» сервер. "

Я погуглил и попробовал следующее.

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

был добавлен в app.config как на клиенте, так и на сервере.

Я также убедился, что проект компилируется в режиме отладки.

Что еще может быть причиной этого сообщения?

Редактировать: Добавлено больше информации на основе вопросов обратной связи

  • Используется wsHttpBinding
  • Я установил

    <serviceDebug includeExceptionDetailInFaults="true"/>
    
  • Я использую

    var service = new HomeReference.HomeServiceClient();
    service.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
    

К сожалению, ошибка появляется при первом вызове метода в моей службе. Я могу закрыть окно сообщения, и приложение продолжает работать. Любые исключения, выдаваемые на сервере, не передаются обратно клиенту, хотя (я предполагаю, что это должно?)

Ответы [ 12 ]

39 голосов
/ 14 сентября 2009

Я боролся с этой же ошибкой более часа и низко, и вот, я перезапустил VS2008, и он волшебным образом исправился. Попробуйте, так как это может сэкономить вам время.

13 голосов
/ 17 июля 2009

В моем случае проблема оказалась в несоответствии настроек безопасности на клиенте и сервере. Я использовал пользовательскую привязку, как это:

<customBinding>
    <binding name="AuthorisedBinaryHttpsBinding" receiveTimeout="00:03:00" sendTimeout="00:03:00">
      <!-- this next element caused the problem: -->
      <security authenticationMode="UserNameOverTransport">
      </security>
      <binaryMessageEncoding>
        <readerQuotas maxDepth="100" maxStringContentLength="1000000"
          maxArrayLength="655360000" />
      </binaryMessageEncoding>
      <httpsTransport />
    </binding>
  </customBinding>

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

Для решения проблемы я сначала включил трассировка WCF . Это показало мне, что WCF выбрасывал MessageSecurityException :

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

Это указывало на то, что я посмотрел настройки Binding на стороне клиента. Оказалось, что я не добавил требуемый элемент безопасности в свою пользовательскую привязку. Поскольку я делал это с помощью кода, мне нужно было следующее (обратите внимание на 3-ю строку):

  var binding = new CustomBinding(
      binaryEncoding,
      SecurityBindingElement.CreateUserNameOverTransportBindingElement(),
      new HttpsTransportBindingElement { MaxReceivedMessageSize = MaxMessageSize, });

Относительно того, почему Visual Studio показывала эту ошибку, я понятия не имею - мне кажется, что это ошибка.

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

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

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

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

  • Служба должна быть вызвана из клиента WCF.

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

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

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

Кроме того, если оба проекта (клиента и службы) находятся в одном и том же решении, но будут выполняться в разных процессах (например, если вы используете локальный IIS Server для разработки и используете свое веб-приложение на , отличающемся от другого) пул приложений , чем служба, которую он использует), вам может потребоваться включить « Несколько запускаемых проектов » для решения (в Свойствах решения -> Запуск проекта), чтобы отладчик мог подключиться к обоим.

Чтобы окно браузера службы не отображалось при каждой отладке, можно установить для параметра «Действие запуска» (в свойствах проекта службы) значение «Не открывать страницу. Дождаться запроса от внешнего приложения».

Это из личного опыта и может помочь другим.

6 голосов
/ 15 марта 2010

Другая причина, по которой вы можете увидеть эту ошибку (и я считаю, что это так), если вы работаете в 64-битной Windows. Очевидно, что Visual Studio не поддерживает x64 отладчик.

Вы можете обойти это, изменив Цель платформы для потребляющего приложения:

Свойства проекта -> Построение -> Измените «Цель платформы» на «x86».

К сожалению, это не сработает для меня, поскольку я пытаюсь работать в Windows Azure Development AppFabric, которая, кажется, требует, чтобы все работало в 64-битном режиме!

1 голос
/ 25 ноября 2011

У меня тоже такая же проблема. Я изменил оба файла конфигурации клиента и сервиса, например

Отладка компиляции установлена ​​в true.

Это сработало для меня.

0 голосов
/ 21 января 2019

У меня была такая же проблема в Visual Studio 2017. После удаления скрытой папки .vs в корне папки решения я смог снова выполнить отладку.

0 голосов
/ 03 ноября 2016

Также может быть, что один и тот же номер порта используется в IISExpress и IIS. Если вы разрабатываете приложение WCF в Visual Studio и IISExpress, а затем устанавливаете это приложение на локальный IIS, убедитесь, что не используете один и тот же номер порта в IIS и IISExpress. Использование того же номера порта приведет к этому сообщению об ошибке.

0 голосов
/ 01 марта 2013

В моем случае проблема оказалась совсем другой. Я изменил название операции на веб-сервисе и забыл обновить клиент. По какой-то причине это привело к ошибке «Невозможно автоматически отладить ...».

0 голосов
/ 25 августа 2011

В вашем веб-сервисе web.config убедитесь, что для отладки компиляции установлено значение true. Это должно исправить вашу проблему!

0 голосов
/ 03 апреля 2009

У меня была похожая проблема, и, похоже, это произошло из-за того, что проверка подлинности Windows не включена на сайте / виртуальном каталоге IIS.

Вы пытались установить режим аутентификации на Интегрированный вместо Анонимного? http://msdn.microsoft.com/en-us/library/x8a5axew(VS.80).aspx

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