我有一个在本地运行良好的应用程序,但在部署时我看到错误:
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)
我已经尝试通过程序集绑定日志查看器查看程序集绑定日志,但即使打开它我没有获得比上面的堆栈跟踪更多的信息,日志似乎保持为空。它抱怨的组件存在,并且它的表面上存在所有依赖组件。我还可以做些什么来调试我服务器上的错误?
答案 0 :(得分:2)
此错误与架构不匹配有关,即您的二进制文件可能希望在x86进程中运行,但IIS在x64进程中运行这些错误(反之亦然)。这可以在应用程序池设置中进行配置。
要调试此问题,您可以尝试以下操作: 1)启用融合记录( How to enable assembly bind failure logging (Fusion) in .NET
2)使用带有加载程序快照的Windows调试器(WinDbg)。 请看这里如何设置它。 http://www.microsoft.com/msj/0999/hood/hood0999.aspx
当在WinDbg中使用 sxeclr 命令捕获托管异常时 当您点击ConfigurationErrorsException时,您应该运行 .loadby sos clr 命令,然后运行!pe - 这应显示有关异常的更多详细信息。同时,加载器快照应该显示哪个DLL有加载问题。 您需要在WinDBG下运行IIS工作进程(w3wp.exe)。您应该使用gflags来配置它。 通常2)可以帮助C ++ / CLI程序集。