将.net 2.0应用程序从Windows Server 2003/iis6迁移到Windows Server 2008 R2/iis7

发布于 2024-10-03 09:04:09 字数 2563 浏览 5 评论 0原文

我正在尝试将 .net 2.0 应用程序从 Windows Server 2003 迁移到 Windows Server 2008。
我收到错误 - 找不到指定的模块。 (HRESULT 异常:0x8007007E)

似乎缺少一个 dll,但我似乎无法找出是哪个。我将整个应用程序复制到我在 IIS7 中创建的新网站。

我还在网上看到一些关于在 system32 和 syswow64 文件夹中需要 dll msvcr71.dll 的帖子,所以我尝试了,但它不起作用。

Windows Server 2008 R2 作为 64 位操作系统是否存在问题?

感谢您提前提供的任何帮助。

应用程序日志中的更多详细信息:

在 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) 在 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() 在 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)在 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) 在 System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir) 在 System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, BooleanignoreErrors) 在 System.Web .Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir,VirtualPath virtualDir,布尔ignoreErrors)在System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)在System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath,布尔noBuild,布尔allowCrossApp,布尔allowBuildInPrecompile)在System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext上下文,VirtualPath virtualPath,布尔noBuild,布尔allowCrossApp,布尔allowBuildInPrecompile)在System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath,HttpContext上下文,布尔allowCrossApp,布尔noAssert)在System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath,类型requiredBaseType,HttpContext上下文,布尔值allowCrossApp,布尔noAssert)在System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext上下文,字符串requestType,VirtualPath virtualPath,字符串physicalPath )在System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext上下文,字符串requestType,VirtualPath virtualPath,字符串physicalPath)在System.Web.HttpApplication.MapHttpHandler(HttpContext上下文,字符串requestType,VirtualPath路径,字符串pathTranslated ,Boolean useAppConfig) 在 System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean&同步完成)

编辑:

这里是有关 IIS 配置的更多信息:

我在经典模式下的应用程序池上设置了一个主网站 - 我还将其设置为运行 32 位应用程序。我只在该文件夹中放入一个简单的 test.aspx 文件,它工作正常。然后,我有一个子目录,它实际上包含我要迁移的应用程序。我在其中添加了另一个 test.aspx 文件,我可以很好地导航到它。

当我转到子目录并将其设为应用程序目录时,test.aspx 文件不再起作用,并且出现上述错误。

我希望这能让我的问题得到更多的了解。

I am attempting to migrate a .net 2.0 application from Windows Server 2003 to windows server 2008.
I am receiving the error - The specified module could not be found. (Exception from HRESULT: 0x8007007E)

It seems like there is a dll missing however I cannot seem to find out which one. I copied the entire application over to the new website I created in IIS7.

I also saw some posts on the net about needing the dll msvcr71.dll in the system32 and syswow64 folders so I tried that, however it didn't work.

Could there be an issue with Windows Server 2008 R2 being a 64bit OS?

Thanks for any help in advance.

More detail from the application logs:

at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) at System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() at System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) at System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir) at System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors) at System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors) at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

EDIT:

Here is more information about the IIS configuration:

I have a main website setup on an apppool set in classic mode - I also set it to run 32bit applications. I put just a simple test.aspx file inside that folder and it works fine. I then have a subdirectory which actually holds the application I am trying to migrate. I added another test.aspx file in there and I can navigate to it fine.

When I go to the subdirectory and make it an application directory the test.aspx file no longer works and I get the error above.

I hope this will shed more light on my issue.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不美如何 2024-10-10 09:04:09

我想出了我自己的问题。

bin文件夹中有一个DLL NTidy.dll。

此 dll 需要以下 dll 位于 system32 文件夹中:

  • msvcp71d.dll ( Microsoft C++ 运行时库 )
  • msvcp71.dll ( Microsoft C++ 运行时库 )
  • msvcr71d.dll ( Microsoft C 运行时库 )
  • msvcr71.dll ( Microsoft C 运行时库 )

一次我添加了这些 dll,应用程序开始工作。

谢谢

I Figured out my own issue.

There is a DLL NTidy.dll in the bin folder.

This dll required the following dlls to be in the system32 folder:

  • msvcp71d.dll ( Microsoft C++ Runtime Library )
  • msvcp71.dll ( Microsoft C++ Runtime Library )
  • msvcr71d.dll ( Microsoft C Runtime Library )
  • msvcr71.dll ( Microsoft C Runtime Library )

Once I added those dlls the application began to work.

Thanks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文