64位windows 2008 系统下IIS7 加载 ISAPI 失败
我要评论2013/01/13 11:11:08 来源:绿色资源网编辑:www.downcc.com 评论:0点击:524次
症状
公司一台数据库服务器上部署了IIS网站(IIS7),利用Sql Server Analysis Services的msmdpump.dll组件,实现了通过HTTP层来访问Analysis Services(MSAS不支持HTTP远程访问,非HTTP的远程访问也一直没成功过)。运行状况一直良好,最近突然罢工。Debug发现在建立连接的时候总是抛出“The Connection either timed out or was lost”。
诊断
尝试用企业管理器直接连接Analysis Services,成功,数据访问也正常,说明Analysis Services服务运作正常。那看来问题是出在了IIS这一层。
直接在浏览器中通过http://machinename/olap/msmdpump.dll去访问的时候,会弹出一个保存文件的对话框。正常情况下,服务器会返回500,因为没有数据输入。现在弹出保存文件的对话框,说明IIS把这个dll资源当作一个普通文件来对待了,而不是调用ISAPI处理器来处理。
细看了网站的配置,似乎没有问题,重新部署了一个网站,重新配置了ISAPI处理器映射,问题依旧出现。
自己探索了很久,未果,Google了很久,一篇文章(IIS7 - Running 32-bit and 64-bit ASP.NET versions at the same time on different worker processes)提醒了我。这篇文章讲的是如何在不同的应用程序池进程上同时使用32位和64位的Asp.Net。
公司服务器出于性能考虑,用了64位系统。相应的msmdpump.dll文件也是64位的,但IIS的应用程序池进程是多少位的,我倒还真没考虑过。任务管理器一看,只有一个"w3wp.exe * 32”,果然是32位的。那问题的原因应该是,32位的应用程序池无法加载64位的Isapi处理器。
知道了问题所在,解决方法也很简单,启动一个64位的应用程序池就行了。打开应用程序池的高级设置,找到了“启用32位应用程序(enable32bitAppOnWin64)”的设置,将其从原来的True改成False(默认值为False)。这个选项的作用就是允许在64位操作系统上,以32位的应用程序池去加载32位的程序。
之所以会突然出现这个问题,是因为IIS的机器配置文件ApplicationHost.config文件中,全局应用程序池的enable32bitAppOnWin64默认值被意外修改为True。而我部署的IIS网站,由于没有显式设置此选项,因此会继承ApplicationHost.config文件中的默认值。
关键词:IIS7
相关阅读
- 10-21IIS7.5 http 1.1 新建应用程序失败的解决方法
- 08-28IIS7 支持html页面包含(include)html页面 IIS设置与代码编写
- 01-13IIS7/iis7.5伪静态加号与空格错误解决办法
- 10-31win2008 中iis7设置404页面但返回状态200的问题解决办法
- 05-05启用win7下IIS7的http500错误详细信息提示显示的方法步骤
- 05-05Windows2008 64位IIS7+ACCESS数据库无法打开Asp页面
- 05-05win2008 r2系统iis7中如何设置ip限制
- 05-05win7 iis7.5 Request 对象 错误 'ASP 0104 : 80004005'
- 05-03iis7.5 500 - 内部服务器错误
阅读本文后您有什么感想? 已有 人给出评价!
用户评论
热门评论
最新评论
相关软件
热点图文
- 04-04用Win 2003 server打造安全的个人Web服务器
- 02-01apache配置<Files>< FilesMatch>< Location><LocationMatch>指令
- 06-30nginx 301 302重定向跳转配置教程
- 11-10用Apache架设Web服务器
- 04-05Apache 服务器的安装教程
- 06-04HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
- 09-23linux修改php.ini后重新加载配置文件命令
- 12-12IIS支持任意扩展名下载的方法
- 04-04win2008 iis7 设置取消 执行“纯脚本”权限,禁止上传木马
- 05-04Apache+PHP和Tomcat网页乱码问题