Как отладить сборку Load - ConfigurationErrorsException
У меня есть приложение, которое работает локально, но при развертывании я вижу ошибку:
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 ответ
Эта ошибка связана с несоответствием архитектуры, т. Е. Ваши двоичные файлы, вероятно, ожидают запуска в процессе 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.