写之前,犹豫了很长时间,不懂这个初级分析会不会引起园友的批判,说实在,在博客园发贴,真有点诚惶诚恐的感觉,很怕对不住大家。
前段时间花了一个星期给客户做了一个OA系统,用的是Win2008的系统,VS2008+Access数据库做的,本来客户已有一个ASP的主机,因为考虑到现在本本上确实没装有其它的开发环境了,就直接上.net3.5了。当做好想当然的直接上传到服务器,不想总是运行不起来。
总结了一下,问题如下:
1:访问静态页面无任何问题,但是.aspx就不行,总是报一个服务器出错。但具体错误又没有提示。
2:无法加载DDL文件
3:首页登录图片显示不完整。
刚开始一直在和客服联系,以为是他们的服务器不支持,因为我在本地部署是没有任何问题的。后来他们说服务器是没有问题的,应该是程序的问题。
然后我试着在本地IIS新建一个虚拟目录来运行,果然也是不行的,报出的错误是一样的。新建网站是可以直接运行的。
分析如下:
1:IIS7会不会和IIS6一样,默认编译语言是VB?
2:应用程序配置文件的存放目录是不是不正确?
3:网站编译后的BIN目录是不是没有被页面访问到?
4:页面之间的访问路径是否正确?
5:数据库文件是否有执行全部权限?
\n
带着以上问题,我一个个的去查找。
问题1:找到服务管理器下面的IIS的默认网站,切换到“功能视图--.net编译项”,打开一看,果然默认编译语言是VB,好,第一个问题搞定。
问题2:配置文件改放到默认网站根目录下面,把原来IIS自带的配置文件覆盖掉,再运行,好,可以访问到登陆页面了,但是登陆页面的图片总是显示不出来,想想应该是路径问题,接着将目录IMAGE也放到根目录,刷新后图片显示出来了,但是验证码没有,怪了。为什么呢?
再次分析,因为验证码是用一个.aspx页面生成一个流后写入到Cookie中的,会不会是也是路径问题?接着把验证码页面再放到根目录下,果然OK。
问题3:关于DDL文件执行权限问题,其实DDL文件是生成到了BIN目录下面,所以应该是这个目录的执行权限问题了,接着在IIS中打开此目录属性,找到一个叫做:IIS_IUSER的用户,编辑此用户权限,使其拥有对BIN的全部权限。再次运行,OK,访问到了,但是数据库又出错,找不到可用的连接。
真是怪了,为什么呢?明明数据库就是和SERVER层放在一起的呀!而且页面可以访问到数据库呀,为什么SERVER不行呢?我们先来分析问题4.
问题4:我的首页上有一颗树,在生成树时,我用了硬编码方式(时间紧),导致了导航的URL总是自动上”~/”, 在发布时没注意到这个问题,所以页面间访问时,总是说找不到路径。把这个”~/”,去掉后问题解决,其实这是小问题了,个人没注意到。
问题5:数据库文件问题,终于来到这个重头了。其实不懂是不是IIS中虚拟目录的问题,要解决这个问题,只要你在网站根目录下建好一个叫做App_Data的目录,再将你的ACCESS数据库放进去就差不多了,只所以说差不多,因为还要再做一件事,和BIN目录一样,IIS_IUSER的用户对这个目录也是没有写入权限的,你查询数据没问题,但是你要写入,不好意思,出错。
问题到这里解决得差不多了,最后按照解决问题的步骤将网站放到服务器上,一运行,还是不行,咦,真是怪事年年有,今年特别多啊!
心想死马当做活马医吧,再次把BIN目录COPY到虚拟目录下,注意,只是COPY,根目录下还是有一个BIN目录的,虚拟目录下的配置文件删除,再次访问登陆页面,输入用户名密码,成功!再试一下其它的操作,一切OK!
直到这一步,距系统完成已过去了三天,网上广发贴子,无人回应,百度GOOGLE找不到任何帮助,头真是大。
来源:http://www.cnblogs.com/viter