Я запускаю Visual Studio 2010 на машине Windows 7 x64, и иногда VS дает мне, старое доброе "Удаленная процедура не могло быть отлажено. Это обычно указывает, что отладка не была включена на сервере" ошибку, о которой спрашивает много людей.
Моя проблема, тем не менее, состоит в том, что это, кажется, только делает это случайным образом (это может быть где угодно от нескольких минут до нескольких часов), и после того, как я уже выполнил много успешных вызовов к сервису. Это не препятствует тому, чтобы сервис работал. Это все еще возвращает значения и не бросает ошибок. Единственная разница - то, что раздражающее диалоговое окно открывается каждый раз, я начинаю отлаживать свое приложение.
Я должен упомянуть, что соединяю сервис WCF из приложения WPF. Если я запускаю веб-сайт, сервис является частью, я не получаю диалоговое окно.
Несколько вещей, которые я попробовал, которые не работают:
Это - просто ошибка в Visual Studio 2010 или является там чем-то, что я пропускаю?
ОБНОВЛЕНИЕ
Я заметил, что это, кажется, происходит, если мои сбои приложения WPF, в то время как сервис WCF инициализируется. Впоследствии, все попытки назвать сервис WCF поднимут "Не могущий отладить" сообщение, пока я не перезапущу VS2010.
Итак, у меня есть несколько вопросов о вашей службе WCF, которую вы используете. Вы настроили WCF для работы в режиме совместимости с ASP.NET? Режим совместимости с ASP.NET? Возможно, вы подключаетесь к веб-серверу, а не к процессу, на котором размещен WCF. Также можете ли вы заставить других воспроизвести такое поведение? Если это так, я бы отправил электронное письмо одному из менеджеров по продукту Visual Studio, чтобы убедиться, что исправление для этого внесено в SP1.
Это долгий путь, но я решил аналогичную проблему, повторно запустив 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.
Не уверен, что это сработает, но, судя по вашему обновлению, похоже, что процесс не подключен и поэтому вы не можете отлаживать.
Вот теория:
Тогда решением будет попытка прикрепить процесс, содержащий приложение WCF, вручную.
Visual Studio не отлаживает все веб-приложения. Только действительные WebServices.
Если это не так, возможно, ошибка в machine.config. Посмотрите.
В любом случае, если вы сделаете все вручную, все должно работать.
Примечание: У меня были некоторые странные проблемы с отладкой, так как я использовал VS2010 beta. После получения лицензий все работает идеально.
Вы упомянули, что:
Служба WCF работает на Сайт ASP.Net. Если я запустил ASP.Net сайт для отладки сайта через Visual Studio я не получаю проблемы
Включили ли вы функции активации .NET Framework WCF?
Предполагая, что вы используете Windows Server 2008:
Без этих функций активации IIS не устанавливает прослушиватель, который знает, как активировать процессы, на которых размещается ваша служба WCF.
Когда вы вручную открываете веб-сайт, вы вручную активируете процессы и, следовательно, должны увидеть, что ваши службы WCF становятся доступными. Но вы также упоминаете, что они «случайным образом» становятся недоступными - вероятно, это происходит, когда процесс хостинга завершается из-за отсутствия активности и не запускается автоматически, когда вы в следующий раз пытаетесь отправить сообщение своим службам.
Это не обязательно может быть вариантом, если вы уже развернули службу, но если вы добавите веб-сайт как локальный проект, а не как проект IIS, он будет использовать встроенный отладочный веб-сервер (Cassini), к которому у VS, кажется, меньше проблем с подключением.
Посмотрите на утилиту, содержащуюся в папке C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE
, под названием vsdiag_regwcf.exe
.
Дополнительная информация, которая может решить вашу проблему Отладка служб WCF в Visual Studio 2008
В вашей веб-службе, если вы используете статические инициализаторы, может помочь регистрация того, были ли они выполнены успешно или нет. Например (с использованием регистратора log4net , назначенного «Журналу»):
static Foo() {
try {
// ... initialization code here
Log.Info( ... ); // log success
}
catch(Exception ex) {
Log.Fatal(ex.ToString()); // log failure reason
}
}
Более чем однажды это спасало мою команду.
Если приложение WPF скомпилировано в 32-битном режиме или запущено на другом (32-битном компьютере), вы установили для пула приложений сайта IIS, на котором размещена служба WCF, значение «Включить 32-битные приложения» "в правду?
Не уверен, что это необходимо, но вы уже пробовали много других вещей, так что, возможно, стоит попробовать, если он еще не установлен.
Хорошо, прежде чем вы попробуете 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