質問

私は走ろうとしています 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ビットアプリケーションを有効にする」必要があります。

  1. IISマネージャーを開く
  2. アプリケーションプールの「[詳細設定]」をクリックします。
  3. セットする 32ビットアプリケーションを有効にします 本当です

よりタイムリーな応答については、サービスに関連する質問にリンクを送信してください。 ServiceStack Google Group.

更新:追加するのを忘れていました。また、ビルド構成をx86(32bit)に設定するには、最上位レベルのプロジェクト(ASP.NET Webアプリケーションなど)も必要です。

ダウンロードした場合 ServiceStack.examplesの最新バージョン(v2.01) これは、64ビットサーバーで動作するようになりました。

これの詳細については、次の情報を追跡できます。

https://groups.google.com/d/topic/servicestack/eupqf2ji4ig/discussion

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top