System.BadimageFormatexception on Running ServiceStackの例。
-
09-10-2019 - |
質問
私は走ろうとしています ServiceStack 例プロジェクト。 Webクライアントを実行すると、次のエラーが表示されます。
{System.BadImageFormatException: An attempt was made to load a program with an
incorrect format. (Exception from HRESULT: 0x8007000B)
at Mono.Data.Sqlite.UnsafeNativeMethods.sqlite3_open_v2(Byte[] utf8Filename,
IntPtr& db, Int32 flags, IntPtr vfs)
at Mono.Data.Sqlite.SQLite3.Open(String strFilename, SQLiteOpenFlagsEnum
flags, Int32 maxPoolSize, Boolean usePool)
at Mono.Data.Sqlite.SqliteConnection.Open()
at ServiceStack.OrmLite.OrmLiteConnection.Open()
at ServiceStack.OrmLite.OrmLiteConnectionFactory.OpenDbConnection()
at ServiceStack.Examples.ServiceInterface.Support.ConfigureDatabase
.Init(IDbConnectionFactory connectionFactory)
in E:\ServiceStack.Examples\src\ServiceStack.Examples\
ServiceStack.Examples.ServiceInterface\Support\ConfigureDatabase.cs:line 23}
最新のsystem.data.sqlite.dllファイルをダウンロードして使用しようとしましたが、同じエラーが発生しています。 Windows 7 64ビットボックスで64ビットVS2010を実行しています。
解決
メインプロジェクトのプラットフォームターゲットをX86に設定して、これを修正します。これは下で実行できます プロジェクト... - >プロパティ - >ビルド.
SQLLITEはおそらく32ビットコンポーネントであり、アプリケーションをロードできるようにするには、32ビットアプリケーションも必要です(64ビットプロセスは32ビットコンポーネントをロードできません。その逆も同様です)。
他のヒント
これは、64ビットIIS/PCで32ビットSQLite.dllをロードしようとする場合の問題です。
それを動作させるには、次のように「32ビットアプリケーションを有効にする」必要があります。
- IISマネージャーを開く
- アプリケーションプールの「[詳細設定]」をクリックします。
- セットする 32ビットアプリケーションを有効にします 本当です
よりタイムリーな応答については、サービスに関連する質問にリンクを送信してください。 ServiceStack Google Group.
更新:追加するのを忘れていました。また、ビルド構成をx86(32bit)に設定するには、最上位レベルのプロジェクト(ASP.NET Webアプリケーションなど)も必要です。
ダウンロードした場合 ServiceStack.examplesの最新バージョン(v2.01) これは、64ビットサーバーで動作するようになりました。
これの詳細については、次の情報を追跡できます。
https://groups.google.com/d/topic/servicestack/eupqf2ji4ig/discussion