IIS7 应用程序池无法加载具有固定基地址的库

2024-01-09

我的 .NET 4.0 Web 服务正在使用 libeay32.dll,它是在 VS2010 中使用 /FIXED 选项编译的,以便符合 FIPS 要求。这意味着 libeay32.dll 无法加载,除非它位于某个地址 (0xfb00000)。抛出的异常是:

System.DllNotFoundException:无法加载 DLL “some_dependent_library.dll”:尝试访问无效地址。

我知道帮助保证 libeay32.dll 获得正确地址的唯一方法是在加载任何其他 DLL 之前将其加载到 Main() 方法中(使用 kernel32.dll 中的 LoadLibrary())。这是我在 Windows 服务和单元测试中成功使用的方法。但是,在我的 Web 服务中,我已将 LoadLibrary 放入 Global.asax.cs 的 Application_Start() 中,但它仍然偶尔会失败。 (我查看了 procmon - 首先加载了许多其他 DLL)

有没有其他方法可以确保 libeay32.dll 获取所需的地址?是否有代码可以在我的应用程序池启动时但在 Application_Start() 之前运行?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIS7 应用程序池无法加载具有固定基地址的库 的相关文章

随机推荐