无法加载文件或程序集“idrsnet15.dll”或其依赖项之一。指定的模块无法找到

时间:2014-10-09 10:11:47

标签: c# asp.net .net dll

我正在尝试使用这些配置在我的Asp.net WebService项目中添加第三方C#dll作为资源。

C#DLL在x64环境中使用运行时版本(4.0.30319)在dotnet框架4中构建 我们正在使用VS 2010框架版本4.0.30319 RTMRel;在ASP.Net webservice项目配置下,我们使用目标x64平台设置目标框架4。

我需要将此DLL用于我的Web服务应用程序,但在通过IIS浏览时会出现运行时异常。

---------------------------- ERROR DETAIL ----------------- -------------------------------------------

  

无法加载文件或程序集“idrsnet15.dll”或其中一个   依赖。指定的模块无法找到。描述:   在执行当前期间发生了未处理的异常   网络请求。请查看堆栈跟踪以获取更多信息   错误以及它在代码中的起源。

     

异常详细信息:System.IO.FileNotFoundException:无法加载   文件或程序集“idrsnet15.dll”或其依赖项之一。该   无法找到指定的模块。

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

堆栈追踪:

     

[FileNotFoundException:无法加载文件或程序集   'idrsnet15.dll'或其依赖项之一。指定的模块可以   找不到。]
  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,   证据集合安全,StackCrawlMark& stackMark,布尔   forIntrospection)+192 System.Reflection.Assembly.Load(String   assemblyString)+35
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+118

     

[ConfigurationErrorsException:无法加载文件或程序集   'idrsnet15.dll'或其依赖项之一。指定的模块可以   找不到。]
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+11392147
  System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()   +484 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()+ 127 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection   compConfig)+334
  System.Web.Compilation.BuildManager.CallPreStartInitMethods()+280
  System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParameters hostingParameters,   PolicyLevel policyLevel,Exception appDomainCreationException)+1087

     

[HttpException(0x80004005):无法加载文件或程序集   'idrsnet15.dll'或其依赖项之一。指定的模块可以   找不到。] System.Web.HttpRuntime.FirstRequestInit(HttpContext   上下文)+11524352
  System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)   +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest)   wr,HttpContext context)+4782309

     

版本信息:Microsoft .NET Framework版本:4.0.30319;   ASP.NET版本:4.0.30319.1   ----------------------------错误详情-------------------- ----------------------------------------

我们通过选择3.5框架创建了Asp.net项目,然后在应用程序配置下设置了目标框架4.0。

我可以在此路径下见证TempAsp.net文件,包括程序集和第三方dll: C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ myocrapp \ f4fd840d \ f71f8f0e \ assembly \ dl3 \ 1a6aa3d5 \ 00bb235d_957bcf01

2 个答案:

答案 0 :(得分:0)

根据我的理解,首先检查你是否正确包含了你的第三方dll referene(确实存在于发布文件夹或虚拟目录中) 第二件事是你为IIS提供了足够的访问权限来访问你的第三方dll,所以你可以设置你的IIS虚拟目录以访问IIS用户帐户。

您也可以使用Dependency Walker来了解您的第三方dll(http://dependencywalker.com/)所需的依赖程序集,并且系统中存在所有必需的文件,还要检查第三方的版本相关信息dll(因为X64和x86不同,在某些情况下可能无法加载)。

答案 1 :(得分:0)

感谢Ashok的贡献。

我们通过配置' PATH'来解决此异常。具有IDRS未管理dll(其他IDRS未管理dll所在的路径)的值的环境变量,因为当IIS部署应用程序时,它仅将托管dll部署到临时文件夹,但仍需要加载剩余的非托管第三方dll成功。