Tessnet2 Не удалось загрузить файл или правильно

Я реализовал библиотеку Tessnet2 для работы в моем веб-проекте. В процессе отладки я избавился от всех "обычных" ошибок ++.

Когда я развертываю это решение на веб-сервере с Visual Studio 2010 и тестирую сайт, я получаю сообщение об ошибке:

Could not load file or assembly 'tessnet2_32' or one of its dependencies. 
An attempt was made to load a program with an incorrect format.

Трассировка стека выглядит следующим образом:

[BadImageFormatException: Could not load file or assembly 'tessnet2_32' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192
   System.Reflection.Assembly.Load(String assemblyString) +35
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +123

[ConfigurationErrorsException: Could not load file or assembly 'tessnet2_32' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11568160
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +485
   System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +79
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +337
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1167

[HttpException (0x80004005): Could not load file or assembly 'tessnet2_32' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11700896
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +11532014

Вопрос в том, видел ли кто-нибудь это раньше? и справился? или знаете как исправить?

Я попытался переместить папку tessdata в папку bin на сервере, я убедился, что файл tessnet2_32.dll и файл pdb находятся на сервере в папке bin ...

Все остальные библиотеки также должны присутствовать.


person Bjørn    schedule 23.05.2012    source источник


Ответы (1)


Сервер представляет собой 64-битный процесс, а tessnet2_32.dll - 32-битный. Таким образом, вы не можете загрузить DLL и получить это исключение.

person fero    schedule 23.05.2012
comment
В этом есть смысл ... попробую перейти на 64-битную dll ... :) - person Bjørn; 23.05.2012
comment
Тогда мой вопрос изменится: как мне разрабатывать 64-битную версию в Visual Studio 2010? Я могу заставить там работать только 32-битный ... - person Bjørn; 23.05.2012
comment
Это зависит от того, какой веб-сервер вы используете для разработки. Архитектура самой Visual Studio значения не имеет. Убедитесь, что у вас 64-битная версия Windows. Затем вам следует переключиться на настоящий IIS во время разработки (проверьте для этого настройки вашего проекта), чтобы у вас была среда, более похожая на производственную среду. Архитектура веб-сервера определяет, какие типы DLL могут быть загружены. - person fero; 23.05.2012
comment
Я использую встроенный веб-сервер для разработки. Тот, который предоставляет Visual Studio, и я использую IIS 7.5 на своем сервере. Итак, вы говорите, что нужно перейти с веб-сервера visual-studio-web, который имеет встроенный отладчик ++, и продолжить разработку на IIS 7.5? (Да, у меня 64-битные окна как на сервере, так и на рабочей станции, на которой я разрабатываю) - person Bjørn; 23.05.2012
comment
@ BjørnØyvindHalvorsen: Я бы порекомендовал использовать IIS express для разработки. . Он хорошо интегрируется в Visual Studio и имеет множество преимуществ по сравнению со старым веб-сервером, встроенным в Visual Studio. - person Ňuf; 23.05.2012
comment
Я нашел еще один вопрос, связанный с вашей проблемой: вы также можете изменить настройки AppPool, чтобы включить 32-битные приложения. stackoverflow.com/a/6754373/722149 - person fero; 23.05.2012
comment
@fero Excellente! Это сработало отлично! :) спасибо-спасибо-спасибо =) - person Bjørn; 23.05.2012