Приложение ASP.NET, разработанное в 32-битной среде, не работает в 64-битной среде - PullRequest
0 голосов
/ 22 мая 2010

Мы разработали веб-сайт ASP.NET на платформе Windows 7 - 32 bit с использованием Visual Studio 2008. Этот веб-сайт размещается в хостинговой компании, где мы делим сервер с сотнями других веб-сайтов ASP.NET.

Мы находимся в процессе смены нашего хостинга на выделенный 64-битный сервер Windows 2008.

Мы установили Visual Studio на этот новый сервер для отладки нашего приложения.

Если мы попытаемся запустить приложение на этом новом сервере, используя собственный веб-сервер Visual Studios 2008 (не IIS 7), мы получим ошибку ниже.

Мы попытались скомпилировать приложение как в 32-битном, так и в 64-битном режиме. Мы также попытались скомпилировать в «Любой процессор». Но ничего не помогает. Мы также попытались запустить Visual Studio от имени администратора, но безуспешно.

Мы получаем следующую ошибку:

Server Error in '/' Application.
The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.FileNotFoundException: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[FileNotFoundException: The specified module could not be found. (Exception from HRESULT: 0x8007007E)]
   System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
   System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +43
   System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +127
   System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +142
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: The specified module could not be found. (Exception from HRESULT: 0x8007007E)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +613
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +203
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +105
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +178
   System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName) +54
   System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +232
   System.Web.Compilation.BuildManager.CompileGlobalAsax() +51
   System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +337

[HttpException (0x80004005): The specified module could not be found. (Exception from HRESULT: 0x8007007E)]
   System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +58
   System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +512
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +729

[HttpException (0x80004005): The specified module could not be found. (Exception from HRESULT: 0x8007007E)]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8897659
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +85
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +259

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

Ответы [ 3 ]

2 голосов
/ 22 мая 2010

Прежде всего, ошибка, которую вы получаете, относится к отсутствующему файлу, следовательно, FileNotFoundException. Однако вы также получаете HRESULT 0x8007007E, что указывает на отсутствующую неуправляемую DLL.

Вот как я бы решил эту проблему:

  1. Пройдите по коду, чтобы найти, где происходит это исключение. С этим HRESULT я почти уверен, что вы найдете исключение в строке, где вызывается неуправляемая функция DLL.
  2. Определите, какую неуправляемую DLL вы пытаетесь использовать.
  3. Проверьте, что это там. Во-первых, вы должны убедиться, что все, что вы используете, находятся на своих местах и ​​имеют правильные ссылки. Если все в порядке, убедитесь, что все их зависимости тоже есть.

Кроме того, после выполнения шага 2 мы сможем помочь вам, если вы сообщите нам, какой тип неуправляемого кода вы используете (т. Е. Что ему может потребоваться для запуска, с точки зрения собственных зависимостей).

Надеюсь, я помог! :)

1 голос
/ 22 мая 2010

Ошибка не связана с процессором. Это явно отсутствующий файл, который вызывает эту ошибку. Вы дважды проверили, что на новом выделенном сервере установлены все необходимые файлы и сборки?

0 голосов
/ 22 мая 2010

Кто-нибудь из информации об ошибке указывает, какой модуль не может быть найден?

Если нет, убедитесь, что в развернутом каталоге bin есть все, что есть у вашего сайта, когда он работает на тестовом сервере.Затем просмотрите файл web.config и убедитесь, что все ссылочные модули находятся на целевом сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...