Windows Server 2008 R2 上的 .NET 2.0 Web 服务未找到模块异常

Posted

技术标签:

【中文标题】Windows Server 2008 R2 上的 .NET 2.0 Web 服务未找到模块异常【英文标题】:Module Not Found Exception From .NET 2.0 Web Service On Windows Server 2008 R2 【发布时间】:2010-09-14 13:32:59 【问题描述】:

当我们尝试在服务器 2008 上加载时,我们遇到了一个 .NET 2.0 Web 服务应用程序的问题,该应用程序正在生成未找到模块的异常。运行相同 2008 版本的第二台服务器可以正常加载该服务。 作为调查的一部分,我们采用了默认的 hello world .NET 2.0 Web 服务并将其部署到两台服务器上,并且存在完全相同的问题,即它在一台服务器上运行良好,而在另一台服务器上运行良好。问题是试图追踪有问题的模块。运行 process explorer 和 dependency walker 似乎并没有给我们任何线索。

完整的错误是:-

[FileNotFoundException:找不到指定的模块。 = (来自 HRESULT 的异常:0x8007007E)] System.Reflection.Assembly._nLoad(AssemblyName 文件名,字符串 = codeBase,证据 assemblySecurity,程序集 locationHint,= StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean = 内省)+0 System.Reflection.Assembly.nLoad(AssemblyName 文件名,字符串 = codeBase,证据 assemblySecurity,程序集 locationHint,= StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean = 内省)+43 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, = 证据 assemblySecurity, StackCrawlMark& stackMark, Boolean = 内省)+127 System.Reflection.Assembly.InternalLoad(字符串 assemblyString,= 证据 assemblySecurity, StackCrawlMark& stackMark, Boolean = 内省)+142 System.Reflection.Assembly.Load(String assemblyString) +28 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 = assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException:找不到指定的模块。 = (来自 HRESULT 的异常:0x8007007E)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 = 程序集名称,布尔型星指令)+613 = System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomai= nBinDirectory() +203 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo = 艾)+105 = System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSe= 行动compConfig)+178 = System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory = 虚拟目录)+163 = System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(Virt= ualDirectory vdir,布尔忽略错误)+53 = System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirec= tory vdir, VirtualPath virtualDir, Boolean ignoreErrors) +175 System.Web.Compilation.BuildManager.CompileWebFile(虚拟路径 = 虚拟路径)+86 = System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPa= th virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean = 允许构建预编译)+261 = System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpC= ontext 上下文,VirtualPath virtualPath,布尔 noBuild,布尔 = allowCrossApp,布尔值 allowBuildInPrecompile) +101 System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext = 上下文,VirtualPath virtualPath,布尔 noBuild,布尔 = allowCrossApp,布尔值 allowBuildInPrecompile) +83 System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext = 上下文,VirtualPath virtualPath)+10 System.Web.UI.WebServiceParser.GetCompiledType(字符串输入文件,= HttpContext 上下文)+43 = System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpCon= 文本上下文、字符串动词、字符串 url、字符串文件路径)+180 = System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IEx= ecutionStep.Execute() +307 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,= 布尔和完成同步)+155

它让我们发疯。有什么想法吗?

TIA

标记

【问题讨论】:

【参考方案1】:
the error you are getting is for a missing unmanaged DLL. 

steps:
1.  See the processors running, if the two are different.
2. Debug your code on the new machine.Step through the code to find where this exception occurs. With that HRESULT, you'll find the exception  where an unmanaged DLL function is called.
3. check the unmanaged DLL.
4. Check if it's there and are referenced correctly. 

还在进程资源管理器中比较两个环境中加载的 dll。

【讨论】:

以上是关于Windows Server 2008 R2 上的 .NET 2.0 Web 服务未找到模块异常的主要内容,如果未能解决你的问题,请参考以下文章

使用 Powershell 在 Windows Server 2008 R2 上的 GAC 中安装 dll

在 asp.net 中的 windows server 2008 R2 上的 PDF 缩略图

Windows Server 2008 R2 上的 .NET 2.0 Web 服务未找到模块异常

无法让 nservicebus 性能计数器在 Windows Server 2008 R2 上的开发/自主机中工作

如何破解windows server 2008r2远程连接数2个的限制

Windows2008 Server r2 64位显示桌面图标的方法