win2008 64w位系统上iis运行32位的网站程序(iis7.5开启32位)
由于网站调用了一个第三方的32bit的dll,所以发布在64位的2008后,访问网站的时候出现加载该dll不成功的错误。
解决方法:
在iis上面设置该网站可运行在32位的模式下面。
步骤如下:
1、找到该网站所引用的应用程序池。
2、在该应用程序池的高级设置里面———》常规——》启用32位应用程序,设置该值为true
问题解决。
下面是其他网友的补充:
部署一个web项目,在本机、本地服务器都没有问题,但部署到远程服务器以后,提示有个dll无法加载:
server error in '/' application.
could not load file or assembly 'common.component.repository' or one of its dependencies. an attempt was made to load a program with an incorrect format.
首先肯定的是,系统声称无法加载的dll千真万确存在
其次从本机、本地服务器都没有问题推测,似乎最有可能的原因是该远程服务器的环境有问题。但是,远程服务器是装了.net4.5.2的,并且跑其他web项目都没问题。web项目所对应的应用程序池也是4.0,排除选了2.0的原因。
后来该web项目的开发者在iis的应用程序池上开启了32位支持,问题解决。原来,远程服务器的是64位的win server 2008。
在 iis 7.x 中,要“启用 32bit 应用程序支持”,需要对“应用程序池”进行配置。将“enable32bitapponwin64”设置为“true”。这样便将应用程序池的工作进程设置为 wow64 模式,而在 wow64 模式下,工作进程将仅加载 32 位应用程序的 32 位进程。为了避免影响其他网站,可为 32bit 应用程序的网站单独创建一个应用程序池。下面 goxia 将引导大家如何在 iis 7.x 下启用 32bit 应用程序支持。
为 32bit 应用程序的网站单独创建一个应用程序池,操作过程省略……;
打开“internet 信息服务 (iis) 管理器”在左侧窗体中展开服务器列表,找到该网站对应的应用程序池;
选中应用程序池,并在右边操作窗体中点击“高级设置…”;
在“(常规)”设置中找到“启用 32 位应用程序”,并将其设置改为“true” 此外,我们也可以利用命令行进行设置,命令行参考如下:
appcmd set apppool /apppool.name:my32bitapp /enable32bitapponwin64:true
大家如果也有类似的故障错误,可以用此办法解决。