3

我的 .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() 之前,我是否可以运行代码?

4

0 回答 0