2011-05-14 47 views
5

我有一个运行在本地精细的应用程序,但是当部署了我看到的错误:如何调试程序集加载 - 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) 

我已经试过观看大会绑定日志通过大会绑定日志查看器,但即使打开,我没有得到比上述堆栈跟踪更多的信息,日志似乎保持空白。它所抱怨的组合是存在的,并且它的表面上有它所有的依赖组件。我还能做些什么来调试我的服务器上的错误?

回答

2

此错误与体系结构不匹配有关,即您的二进制文件可能预计在x86进程中运行,但IIS在x64进程中运行这些错误(反之亦然)。这可在App Pool设置中进行配置。

要调试的问题,你可以尝试以下方法: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程序集。