仔细看了一下网站的配置,好像没什么问题。重新部署网站并重新配置ISAPI处理器映射后,问题仍然出现。
An article (IIS7-Running 32-bit and 64-bit versions of ASP.NET on different work processes) reminded me.
出于性能原因,公司服务器使用64位系统。对应的msmdpump.dll文件也是64位,但是我真的没有考虑过IIS的应用池进程是多少位。乍一看,任务管理器只有一个‘w3wp.exe * 32’。
果然是32位。该问题的原因应该是32位应用程序池无法加载64位Isapi处理器。
知道了问题,解决方法很简单,启动一个64位的应用程序池就可以了。打开应用程序池的高级设置,找到“启用32位应用程序(BitApponWin 64)”的设置。
将其从True更改为False(默认值为False)。此选项的功能是允许将32位程序加载到64位操作系统上的32位应用程序池中。
之所以突然出现这个问题,是因为IIS的机器配置文件全局ApplicationHost.config的enable32bitAppOnWin64的默认值意外更改为True。
我部署的IIS网站将继承ApplicationHost.config文件中的默认值,因为没有显式设置该选项。