2011-01-11 15 views
7

私は実行しようとしていますServiceStackプロジェクト例。私は、Webクライアントを実行すると、私は次のようなエラーになっています:SystemStadの実行中にSystem.BadImageFormatExceptionが発生しました。

{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ファイルをダウンロードし、それを使用しようとしましたが、まだ同じエラーを取得していています。私は64ビットVS2010をWindows 7の64ビットボックスで実行しています。

答えて

10

これを修正するには、メインプロジェクトのプラットフォームターゲットをx86に設定します。これはプロジェクト - >プロパティ - >ビルドの下で行うことができます。

SqlLiteは32ビットコンポーネントである可能性が高く、アプリケーションをロードするには32ビットアプリケーションも必要です(64ビットプロセスは32ビットコンポーネントをロードできず、その逆もありません)。

+0

私は**、**のx86 **それでも同じエラーを取得**任意のCPUを試してみました。 – TheVillageIdiot

7

これは、64ビットIIS/pcで32ビットsqlite.dllをロードしようとすると問題になります。お使いのアプリケーションプールに

  1. オープニングアップIISマネージャ
  2. クリックして[詳細設定]:

    それはあなたがすることによってあなたのAppDomainのための「32ビットアプリケーションを有効にする」ために必要な仕事を得るために。

  3. セットServiceStack Google Groupに任意のServiceStack関連の質問へのリンクを送信すること自由に感じ、よりタイムリーな応答のために真の

から32ビットアプリケーションを有効にし

更新:ビルド構成をx86(32ビット)に設定するには、一番上のレベルのプロジェクト(ASP.NET Webアプリケーション)が必要です。

latest version of ServiceStack.Examples (v2.01)これは64ビットサーバーで動作するようになりました。これについて

詳しい情報は上で追跡することができます。

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

関連する問題