我有一个MVC 3网站引用32位DLL。操作系统为Windows 2008 R2 x64。该网站位于ASP.NET 4应用程序池中。我已启用Enable32Bit,但它不起作用。我收到了错误的图像异常,但找不到在IIS中打开此级别的登录。我已经建立了一个页面,输出该页面是运行32位还是运行64位,并且当我打开/关闭AppPool上的Enable32Bit时,我会得到正确的输出。该网站也是完全信任的。
我不知所措,尝试并使其正常工作。我确实知道它可以在Win7 32bit上运行。
您可以建议一些尝试的方法吗?
更新:我刚刚编写了一个简单的Windows Forms App,上面带有一个按钮,该按钮调用我的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还是集成的,这有关系吗?我已经尝试了两个,但都遇到了同样的问题,但认为值得一问
更新3:我发现这个question试图做同样的事情,他放弃了这并没有太大帮助!
最佳答案
确保所有托管程序集的目标属性为x86
,而不是项目属性中的Any CPU
或x64
。
关于.net - 无法在IIS 7.5上使用Enable32Mode加载32位dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320957/