WcfSVCHost обнаружил критическую ошибку и должен завершиться. Это может быть вызвано неправильным файлом конфигурации - PullRequest
4 голосов
/ 08 февраля 2011
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, чтобы увидеть, какие ошибки произошли, поскольку оно не затрагивает какой-либо сервис, и выдать мне эту ошибку, прежде чем он выполнит какой-либо код?

Спасибо

Ответы [ 2 ]

9 голосов
/ 01 марта 2011

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

Спасибо

0 голосов
/ 11 июня 2019

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

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

В конечном итоге мне стало ясно следующее: во-первых, появится этот экран:

Screenshot of error message

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

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

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

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

Screenshot of WCF class library Properties page, WCF Options tab

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

...