【发布时间】:2011-06-12 08:30:46
【问题描述】:
我有一个引用 32 位 DLL 的 MVC 3 网站。操作系统是 Windows 2008 R2 x64。该网站位于 ASP.NET 4 应用程序池中。我打开了 Enable32Bit 但它不起作用。我收到错误图像异常,但无法找到在 IIS 中打开此级别的登录。我已经设置了一个页面,输出它是运行 32 位还是 64 位,当我打开/关闭 AppPool 上的 Enable32Bit 时,我得到了正确的输出。该网站也是完全信任的。
我不知道如何让它发挥作用。我知道它适用于Win7 32bit。
你能建议一些尝试吗?
更新:我刚刚编写了一个简单的 Windows 窗体应用程序,上面有一个调用我的 DLL 的按钮。这是以 x86 为目标构建的,并且运行良好,因此我认为 IIS 或 ASP.Net 存在问题。以下是用于引用 DLL 的代码:
[DllImport("CDCrypt.dll")]
[return: MarshalAs(UnmanagedType.LPStr)]
public static extern String Encrypt([MarshalAs(UnmanagedType.LPStr)] String aName);
[DllImport("CDCrypt.dll")]
[return: MarshalAs(UnmanagedType.LPStr)]
public static extern String Decrypt([MarshalAs(UnmanagedType.LPStr)] String aName);
更新 2: ASP.Net 管道是 Clasic 还是 Integrated 是否重要?我都试过了,但同样的问题,但认为值得一问
更新 3:我发现这个 question 试图做同样的事情,但他放弃了,这没什么帮助!!
【问题讨论】:
-
这个 32 位 DLL 是完全独立的,还是有其他依赖?您是否尝试过运行 Process Monitor 以查看它还可能尝试加载什么?
-
独立的 DLL 非常非常不可能。即使它非常简单,它也会依赖于 Microsoft C 运行时库 DLL。
-
它是用 Delphi 编写的。查看我更新的问题
-
进程监视器的替代方法是Dependency Walker,用于测试是否缺少依赖项。
-
如何在 ASP.Net 应用程序上执行此操作,并且我仅将 winforms exe 和 dll 复制到单独的文件夹中,它工作正常
标签: .net asp.net-mvc iis iis-7 windows-server-2008