我正在尝试使用这些配置在我的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
答案 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成功。