Как отладить сборку Load - ConfigurationErrorsException - PullRequest
5 голосов
/ 14 мая 2011

У меня есть приложение, которое отлично работает локально, но при развертывании я вижу ошибку:

Exception information: 
    Exception type: ConfigurationErrorsException 
    Exception message: Could not load file or assembly 'FluentMigrator.Runner' or one of its dependencies. An attempt was made to load a program with an incorrect format.
    at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
    at System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()
    at System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()
    at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
    at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
    at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Я попытался просмотреть журнал привязок сборки через Просмотр журнала привязок сборки, нодаже после включения я не получаю больше информации, чем приведенная выше трассировка стека, журнал, кажется, остается пустым.Сборка, на которую он жалуется, присутствует, и на первый взгляд присутствуют все зависимые сборки.Что еще я могу сделать, чтобы исправить ошибки на моем сервере?

1 Ответ

2 голосов
/ 07 июня 2012

Эта ошибка связана с несовпадением архитектуры, т. Е. Ваши двоичные файлы, вероятно, ожидают запуска в процессе x86, но IIS запускает их в процессе x64 (или наоборот). Это настраивается в настройках пула приложений.

Для устранения проблемы вы можете попробовать следующее: 1) Включить ведение журнала Fusion ( Как включить ведение журнала ошибок привязки сборки (Fusion) в .NET

2) Использование отладчика Windows (WinDbg) с привязками загрузчика. Пожалуйста, посмотрите здесь, как его настроить. http://www.microsoft.com/msj/0999/hood/hood0999.aspx

Также, когда в WinDbg перехватывается управляемое исключение с помощью команды sxeclr Когда вы нажимаете ConfigurationErrorsException, вы должны выполнить команду .loadby sos clr , затем ! Pe - это должно отобразить более подробную информацию об исключении. В то же время снимки загрузчика должны показать, какая DLL имеет проблемы с загрузкой. Вам нужно будет запустить рабочий процесс IIS (w3wp.exe) под WinDBG. Вы должны использовать gflags для настройки этого. Обычно 2) поможет с сборками C ++ / CLI.

...