IIS 7.0应用程序加载事件

时间:2013-11-06 08:26:06

标签: c# .net wcf rest iis

我在.NET 4.0中开发了一个WCF Rest Rest Service,它依赖于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(对象发送者,EventArgs e),但由于应用程序本身没有加载,Application_Start没有被执行。

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

0 个答案:

没有答案