System.BadImageFormatException при запуске примеров ServiceStack.

Я пытаюсь запустить ServiceStack Примеры проектов. Когда я запускаю веб-клиент, я получаю следующую ошибку:

{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 в 64-разрядной коробке Windows 7.

2 ответа

Установите целевую платформу вашего основного проекта на x86, чтобы исправить это. Это можно сделать в Project... → Properties → Build.

SqlLite - это, скорее всего, 32-битные компоненты, и для его загрузки приложение также должно быть 32-разрядным приложением (64-разрядные процессы не могут загружать 32-битные компоненты и наоборот).


Это проблема при попытке загрузить 32-разрядную sqlite.dll с 64-разрядным IIS/pc.

Чтобы заставить его работать, вам нужно включить "Включить 32-разрядные приложения" для своего AppDomain:

  • Открытие диспетчера IIS
  • Нажмите "Дополнительные настройки" в вашем пуле приложений.
  • Установите Включить 32-разрядные приложения в true

Для более своевременного ответа не стесняйтесь отправлять ссылку на любые связанные с ServiceStack вопросы в ServiceStack Google Group.

Обновление: я забыл добавить: вам также нужен проект самого высокого уровня (т.е. ваше веб-приложение ASP.NET), чтобы его конфигурация сборки была установлена ​​на x86 (32 бит).

Если вы загрузите последнюю версию ServiceStack.Examples(v2.01), теперь это должно работать на 64-битных серверах.

Более подробную информацию об этом можно отслеживать по:

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

licensed under cc by-sa 3.0 with attribution.