WcfSVCHost обнаружил критическую ошибку и должен завершить работу. Это может быть вызвано неправильным файлом конфигурации

System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.Assembly.GetTypes()
   at Microsoft.Tools.SvcHost.ServiceHostHelper.LoadServiceAssembly(String svcAssemblyPath)

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

Спасибо


person Leo    schedule 08.02.2011    source источник
comment
Попробуйте рекурсивно проверить свойство .InnerException.   -  person marc_s    schedule 08.02.2011
comment
Как бы то ни было, у меня возникла аналогичная проблема при попытке отладить локальный веб-сервис. Я так и не решил эту проблему, однако важно отметить, что в проекте размещались два сервиса. После того, как вы нажали на сервис в IE, который вы хотели отладить, символы, казалось, были доступны.   -  person Todd Richardson    schedule 15.04.2011
comment
У меня была такая же проблема. На моем локальном компьютере клиент и размещенная служба wcf работают нормально. Когда я развертываю сервер Windows 2008, клиент выдает мне эту ошибку. Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации.   -  person Diganta Kumar    schedule 24.10.2013


Ответы (2)


Мне удалось решить проблему. Один из моих проектов был настроен на x86, а другие - на любой процессор. Изменение всего на любой процессор решило проблему для меня.

Спасибо

person Leo    schedule 01.03.2011

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

Оказалось, что приложение, которое я отлаживал, вообще не нуждалось в WcfSvcHost.exe. WcfSvcHost.exe предназначен для самостоятельных приложений WCF. Это приложение использовало службы, представленные как конечная точка в веб-приложении.

Что, наконец, подсказало мне это, так это то, что сначала появлялся этот экран:

Снимок экрана с сообщением об ошибке WcfSvcHost обнаружил критическую ошибку и должен завершить работу.

Я заметил, что это отображается как отдельный процесс для WcfSvcHost.exe в диспетчере задач Windows. Это объясняет, почему я не мог заставить отладчик сломаться, даже когда я настроил Exception Settings, чтобы сломаться, когда System.Reflection.ReflectionTypeLoadException было выброшено. Visual Studio не ломалась, потому что не была подключена к процессу WcfSvcHost.exe. Он был присоединен к процессу IISExpress.exe, в котором выполнялось мое приложение. Но процесс WcfSvcHost.exe выдавал исключение.

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

По какой-то причине Visual Studio все равно запускала WcfSvcHost.exe. И это, наконец, привело меня к этому ответу. Проекты библиотеки классов WCF можно настроить для запуска WcfSvcHost.exe при каждом запуске отладки.

Ответ заключается в том, чтобы щелкнуть правой кнопкой мыши каждый проект библиотеки классов WCF, выбрать «Свойства» и перейти на вкладку «Параметры WCF». Затем снимите флажок Запускать узел службы WCF при отладке другого проекта в том же решении.

Снимок экрана: страница свойств библиотеки классов WCF, вкладка

Это необходимо сделать для всех библиотек классов WCF в вашем решении. Я не был уверен, какие из них какие, поэтому я просто просмотрел свойства для каждой библиотеки классов и исправил те, у которых была вкладка «Параметры WCF».

person Katie Kilian    schedule 11.06.2019
comment
Спасибо, @Charlie, я добавил проект NET CORE API в то же решение, что и проект WCF, и каждый раз, когда я запускаю новый проект, я получаю эту ошибку. Ваше решение работает отлично - person E.Benedos; 16.06.2020