5

ローカルでは問題なく動作するアプリケーションを持っていますが、デプロイすると次のエラーが表示されます。

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)

Assembly Binding Log Viewer を使用してアセンブリ バインディング ログを表示しようとしましたが、オンにしても、上記のスタック トレース以外の情報は得られず、ログは空のままのようです。それが不平を言っているアセンブリが存在し、その表面には、依存するすべてのアセンブリが存在します。サーバーの問題をデバッグするために他に何ができますか?

4

1 に答える 1

2

このエラーはアーキテクチャの不一致に関連しています。つまり、バイナリはおそらく x86 プロセスで実行されることを期待していますが、IIS はこれらを x64 プロセスで実行します (またはその逆)。これは、アプリケーション プールの設定で構成できます。

問題をデバッグするには、次のことを試すことができます: 1) Fusion ログを有効にする (.NET でアセンブリ バインド エラー ログ (Fusion) を有効にする方法)

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 アセンブリに役立ちます。

于 2012-06-07T05:40:40.770 に答える