Visual Studio 2010 случайно не может отладить службу WCF - PullRequest
11 голосов
/ 03 июня 2010

Я запускаю Visual Studio 2010 на компьютере с Windows 7 x64, и иногда VS дает мне старый добрый "Удаленная процедура не может быть отлажена. Это обычно означает, что на сервере не включена отладка « ошибка, о которой спрашивают многие.

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

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

Несколько вещей, которые я пробовал, не работают:

  • Уничтожение и перезапуск сервера.
  • Компиляция веб-сервера в x86
  • Включение трассировки, но не могу найти любые проблемы.

Это просто ошибка в Visual Studio 2010 или мне чего-то не хватает?

UPDATE

Я заметил, что это происходит, если происходит сбой моего приложения WPF во время инициализации службы WCF. После этого все попытки вызвать службу WCF будут вызывать сообщение «Unable to debug» до тех пор, пока я не перезапущу VS2010.

Ответы [ 11 ]

1 голос
/ 17 июля 2010

Это не обязательно вариант, если вы уже развернули службу, но если вы добавите веб-сайт как локальный проект, а не как проект IIS, он будет использовать встроенный отладочный веб-сервер (Cassini) , к которой VS, похоже, имеет меньше проблем.

0 голосов
/ 09 сентября 2011

Я решил эту проблему следующим образом:
1. закрытие экземпляра Visual Studio приложения веб-службы
2. удаление приложения из iis manager
3. запуск решения веб-сервиса в visual studio с правами администратора (win 7)
4. когда мне предложили создать приложение в iis, я ответил да
5. он работал

0 голосов
/ 04 августа 2010

Хорошо, прежде чем попробовать 1000 вещей, обратите внимание, что вы используете VS.NET 2010, и может иметь действительную уязвимость. Вы можете делать все правильно, и проблема с продуктом. На самом деле у меня есть проблема, открывающая себя с Microsoft Connect, в отношении случайного сбоя IDE, когда Blend и .NET открыты во время отладки. Я послал им дамп .dmp проблемы, и они смотрят.

Если вы можете воспроизвести сообщение об исключении WCF, вы можете открыть элемент в Microsoft Connect для Visual Studio. Ссылка ниже:

Visual Studio и .NET Framework Microsoft Connect: http://connect.microsoft.com/VisualStudio

0 голосов
/ 02 августа 2010

Если приложение WPF скомпилировано в 32-разрядном режиме или запущено с другого (32-разрядного компьютера), вы установили для пула приложений сайта IIS, на котором размещена служба WCF, значение «Включить 32-разрядные приложения»?

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

0 голосов
/ 31 июля 2010

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

static Foo() {
   try {
      // ... initialization code here
      Log.Info( ... ); // log success
   }
   catch(Exception ex) {
      Log.Fatal(ex.ToString()); // log failure reason
   }
}

Не раз это было спасением в моей команде.

0 голосов
/ 23 июля 2010

Посмотрите на утилиту, содержащуюся в папке C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE с именем vsdiag_regwcf.exe.

Вот еще некоторая информация, которая может решить вашу проблему Отладка служб WCF в Visual Studio 2008

0 голосов
/ 17 июля 2010

Вы упоминаете, что:

Служба WCF работает на Сайт ASP.Net. Если я запускаю ASP.Net сайт для отладки сайта через Visual Studio я не получаю вопросы

Включили ли вы функции активации .NET Framework WCF?

Если вы работаете в Windows Server 2008:

  1. Открыть диспетчер сервера
  2. Открыть функции Нажмите «Добавить функцию»
  3. Расширение возможностей .NET Framework 3.5.1
  4. Расширение возможностей WCF. Выберите механизмы активации HTTP и не HTTP

Без этих функций активации IIS не устанавливает прослушиватель, который знает, как активировать процессы, в которых размещается ваша служба WCF.

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

0 голосов
/ 15 июля 2010

Visual Studio не отлаживает все веб-приложения. Только действительные веб-сервисы.

Если это не так, возможно, ошибка machine.config. Взгляните на.

Во всяком случае, если вы вручную, это должно работать.

Примечание: у меня были некоторые странные проблемы с отладкой, когда я использовал бета-версию VS2010. После получения лицензий все работает отлично.

0 голосов
/ 13 июля 2010

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

Вот теория:

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

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

0 голосов
/ 04 июля 2010

Это длинный путь, но я решил похожую проблему, повторно выполнив regiis -i для ASP.NET:

.
x64
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
x86
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

Убедитесь, что iisreset после этого.

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