Проблемы с запуском приложения x86 ASP.NET на 64-битных Windows с IIS7.5
-
16-09-2019 - |
Вопрос
В настоящее время я нахожусь в процессе подготовки нового сервера для запуска нашей платформы ASP.NET. Впервые я делаю установку в 64-битных Windows (2008 R2) и с IIS7.5 (до этого всегда 7.0). Наш веб-сайт построен в X86, поэтому я позволил пулам приложений использовать 32-разрядные приложения.
Я застрял при следующей ошибке, которую я получаю, когда просматриваю веб -сайт:
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.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +600
System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +125
System.Web.Compilation.BuildManager.EnsureFirstTimeDirectoryInit(VirtualPath virtualDir) +8803959
System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode) +219
System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath) +43
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +59
System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +101
System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +126
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +62
System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +33
System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +307
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Я использовал Fuslogvw, чтобы отслеживать любые ошибки привязки .NET: 4 собрания появились, но я получаю то же самое на нашем обычном сервере при первом просмотре сайта. Собрание - это CPPCodeprovider, VJSharpCodeprovider и два из наших *.Resources. Я изучил это, и я не думаю, что они являются причиной этой проблемы, конечно, не после того, как выяснили, что рабочая среда имеет те же недостающие сборки в Fuslogvw.
Далее я использовал Deperency Walker для изучения основного DLL веб -сайта. Кажется, ничего не хватает, но я получаю следующее сообщение:
* Error: Modules with different CPU types were found.
Я не думаю, что это также проблема, потому что моя сборка .NET - X86, а все остальные зависимости - X64.
Поэтому я действительно хочу знать, на что жалуется «Модуль« Отсутствует «модуль» ASP.NET.
Решение
Это решило мою проблему: мне пришлось разместить msvcr71.dll в C: Windows System32 и C: Windows Syswow64.
Другие советы
Я решил проблему, установив Включить 32 -битную программу к Истинный Под расширенным настройкой вкладки приложений пула.
Включить 32 -битную программу http://zizhujy.com/blog/image.axd?picture=enable32bit.png
В последнее время у меня была похожая проблема, когда я помещал приложение Beta 1 4.0 на R2 с аналогичными результатами. Мне потребовалось довольно много времени, чтобы обнаружить, что проблема заключалась в том, что одна из основных сборок .NET, упомянутых в проекте (из GAC), стала отмеченной как Copylocal True. Я понятия не имею, как - я, конечно, не делал этого намеренно и никто не работал над этим. Как только я вернул это (и, я думаю, мне пришлось удалить локальную копию), все было хорошо.
Я нашел ответ для моей проблемы с CPPCodeprovider здесь:http://www.experts-exchange.com/programming/languages/.net/.net_framework_2.0/q_24367712.html(Требуется вход)
Выключите «Определите постоянную трассировку» или установите .NET SDK на компьютер с проблемой.