我正在尝试运行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。
答案 0 :(得分:10)
将主项目的平台目标设置为x86以解决此问题。这可以在 Project ... - >下完成。属性 - >构建
SqlLite很可能是一个32位组件,并且为了能够加载它,您的应用程序也需要是一个32位应用程序(64位进程无法加载32位组件,反之亦然)。
答案 1 :(得分:7)
尝试使用64位IIS / pc加载32位sqlite.dll时出现此问题。
要使其正常工作,您需要通过以下方式为您的AppDomain启用“32位应用程序”:
要及时回复,请随时向ServiceStack Google Group发送与任何ServiceStack相关问题的链接。
更新:我忘了添加:您还需要最顶层的项目(即您的ASP.NET Web应用程序)将其构建配置设置为x86(32位)。
如果您下载 latest version of ServiceStack.Examples (v2.01) ,这应该可以在64位服务器上运行。
可以跟踪有关此内容的更多信息:
https://groups.google.com/d/topic/servicestack/EUPqF2jI4ig/discussion