服务器环境
个人电脑,windows7的64位系统,IIS7.0,在IIS上新建了三个站点,分别使用三个应用程序池。
新建M2站点后访问报错,提示mySql.Data.dl文件未能成功加载。
事故原因
IIS报错的原因很多,这里只是记录其中的一种可能性!不过只要操作规范,一般都不会有很莫名其妙的问题。以前看冯大辉的blog,非常认同大师说的一句话,大意是:好的数据库都是严格按照标准操作维护的,不按标准操作的数据库会出现很多莫名其妙的问题。
以前在本机IIS上发布站点,基本都不会出现问题,这次发布怎么会出现DLL文件无法加载的问题呢?
在VS环境下重新编译了文件,并且在VS环境测试了站点程序,能正常访问,重新部署到IIS后,依然报错。
各种百度、google,但是大伙都知道,未能加载文件或程序集,这种问题10000个人遇到的可能是10000中不同的情况,所以基本上帮助不大,但是总结下来,DLL无法加载的问题总结下来情况有一下几种:
1、文件不存在,例如应用程序需要加载Office的组件,但是机器环境没有安装Office,会报错;
2、文件存在,但是加载文件时路径错误;
3、某个DLL依赖于另外的DLL;
4、DLL文件需要注册
5、......
仔细检查了网站程序所有涉及到出问题的DLL的环节,确定没有问题;
焦躁了两个小时,最后也不知道怎么想起,本机前阵子刚从windows7的32版本升级到windows7的64版本,但是下载的MySQL.Data.DLL是32位的版本,重新检查网站程序的编译版本,使用的Any CPU编译的,是否可能由这个原因造成?
解决方案
winform的程序在编译时是需要注意DLL的版本问题的,网站程序是否也会出现这个问题?在百度搜索了下关于IIS应用程序的版本问题,果然发现问题,IIS默认新建的应用程序池是不允许使用32位应用程序的,需要在IIS应用程序池修改;
好吧,先尝试在IIS修改,IIS——>应用程序池——>"你的Web程序使用的应用程序池"——>高级设置,打开如下对话框
修改“启用32位应用程序”为True,确定后刷新IIS的Web应用程序,重新访问,正常!
这里确定了问题是因为DLL的版本问题引发,所以重新下载MySQL.Data.DLL的64版本,也可以解决问题!