0

我在 .NET 4.0 中开发了一个基于 WCF Rest 的服务,它依赖于一个 win32 dll(在不同的路径上)。Win32 dll 与 C++/CLI dll 静态链接,并使用 spring.net 进行依赖注入。

由于我是通过 spring 创建对象,因此这些对象是在 IIS 加载应用程序时创建的。如果 win32 dll 的路径不正确,IIS 会给出错误,即无法加载 C++/CLI dll 或其依赖项之一。

Exception type: ConfigurationErrorsException 
Exception message: Could not load file or assembly 'Services.DLL' or one of its dependencies. The specified module could not be found.
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.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()
at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

我尝试使用设置 IIS 应用程序的路径

Environment.SetEnvironmentVariable("PATH", "path_to_win32_dll;%PATH%", EnvironmentVariableTarget.Process) 

在 Global.asax: Application_Start(object sender, EventArgs e),但由于应用程序本身没有加载,Application_Start 没有得到执行。

有什么方法可以在加载任何 dll 之前在 IIS 应用程序中获取事件,或者在托管环境中获取一个挂钩,以便我可以在加载 dll 之前设置路径。.Net 4.0 中是否还有在加载 dll 时创建的缓存?有没有办法清除它们?

4

0 回答 0