在IIS 7.5上启用32位应用程序无法加载32位DLL

我有一个MVC 3网站引用一个32位的DLL。 操作系统是Windows 2008 R2 x64。 该网站位于ASP.NET 4应用程序池中。 我打开了Enable32Bit,但它不起作用。 我得到了一个坏的图像exception,但无法find在IIS中打开这个级别的日志logging。 我已经build立了一个页面,输出是否运行32位或64位,当我打开/closures应用程序池上的Enable32Bit我得到正确的输出。 该网站也是完全信任。

我不知道该怎么办,然后才能开始工作。 我知道它在Win7 32bit上工作。

你可以build议一些事情尝试?

更新:我刚刚写了一个简单的Windows窗体应用程序与一个button,它调用我的DLL。 这是build立在x86的目标,它工作得很好,所以有IIS或ASP.Net的问题,我认为。

更新2:如果ASP.Netpipe道是Clasic或集成? 我已经尝试了两个,但同样的问题,但认为这是值得问

更新3:我发现这个问题试图做同样的事情,他放弃了哪些不是太有帮助!

这是一个老问题,但您需要单击应用程序池,然后单击池的高级设置,并启用32位应用程序。 没有这个,它会一直尝试加载64位,你会得到32位DLL的不好的图像错误。

如果你得到一个错误的图像,你的32位应用程序试图加载一个64位的DLL。 它是否命名该DLL? (这似乎太明显了,不提呢?)

因此,您需要跟踪该应用程序中引用64位DLL的任何位置,并确保通过向32位应用程序池中添加preCondition =“bitness64”来屏蔽该行。线。 (也请检查以防万一)。

核心.Net的东西(PageHandlerFactory / ASPNET ISAPI)通常设置正确的,所以关注其他模块/处理程序。

最糟糕的情况是,尝试在启动应用程序池时运行进程监视器,从那里确定DLL,然后回溯到导致问题的原因。

请享用!