浅谈IIS7中部署.net3.5的网站问题

        写之前,犹豫了很长时间,不懂这个初级分析会不会引起园友的批判,说实在,在博客园发贴,真有点诚惶诚恐的感觉,很怕对不住大家。
        前段时间花了一个星期给客户做了一个OA系统,用的是Win2008的系统,VS2008+Access数据库做的,本来客户已有一个ASP的主机,因为考虑到现在本本上确实没装有其它的开发环境了,就直接上.net3.5了。当做好想当然的直接上传到服务器,不想总是运行不起来。
总结了一下,问题如下:
1:访问静态页面无任何问题,但是.aspx就不行,总是报一个服务器出错。但具体错误又没有提示。
2:无法加载DLL文件
3:首页登录图片显示不完整。

        刚开始一直在和客服联系,以为是他们的服务器不支持,因为我在本地部署是没有任何问题的。后来他们说服务器是没有问题的,应该是程序的问题。
然后我试着在本地IIS新建一个虚拟目录来运行,果然也是不行的,报出的错误是一样的。新建网站是可以直接运行的。
        分析如下:
1:IIS7会不会和IIS6一样,默认编译语言是VB?
2:应用程序配置文件的存放目录是不是不正确?
3:网站编译后的BIN目录是不是没有被页面访问到?
4:页面之间的访问路径是否正确?
5:数据库文件是否有执行全部权限?


带着以上问题,我一个个的去查找。
         问题1:找到服务管理器下面的IIS的默认网站,切换到“功能视图--.net编译项”,打开一看,果然默认编译语言是VB,好,第一个问题搞定。
         问题2:配置文件改放到默认网站根目录下面,把原来IIS自带的配置文件覆盖掉,再运行,好,可以访问到登陆页面了,但是登陆页面的图片总是显示不出来,想想应该是路径问题,接着将目录IMAGE也放到根目录,刷新后图片显示出来了,但是验证码没有,怪了。为什么呢?
再次分析,因为验证码是用一个.aspx页面生成一个流后写入到Cookie中的,会不会是也是路径问题?接着把验证码页面再放到根目录下,果然OK。
        问题3:关于DLL文件执行权限问题,其实DLL文件是生成到了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找不到任何帮助,头真是大。
      
Tag标签: IIS7.0
posted @ 2008-06-07 16:05 veter 阅读(3275) 评论(18)  编辑 收藏

  回复  引用  查看    
#1楼 2008-06-07 16:43 | 钢钢      
-------------------------------------------------------
说实在,在博客园发贴,真有点诚惶诚恐的感觉,很怕对不住大家。
-------------------------------------------------------

不要怕,错则改之。哪一个不是一步步成长起来的呢?
  回复  引用  查看    
#2楼 2008-06-07 16:45 | 梁逸晨      
给别人做事,能上2.0就不错了。
现在用3.5还不太现实。

至于问题1:只要你ASPX文件指定了LANGUAGE属性,服务器设置什么语言编译都是次要的(极少数的人为强制设置system.config的情况例外)

如果不是自己的服务器,最好不要再2008上面使用ACCESS,因为你无法确定别人的系统是32位还是64位,如果是64位的话,又要经过很复杂的设置才能执行ACCESS文件。
  回复  引用  查看    
#3楼 2008-06-07 17:29 | 王孟军!      
这种解决问题的方法不错
  回复  引用    
#4楼 2008-06-07 18:04 | benbenxx [未注册用户]
"~/" 要加上runat="server"就可以了。如果没有runat="server" 那就去掉“~”
"~/" 表示根目录!
  回复  引用  查看    
#5楼 2008-06-07 18:37 | chunfeng      
都是慢慢成长起来的
  回复  引用    
#6楼 2008-06-07 18:39 | swwf [未注册用户]
2008是Network Service吧?
  回复  引用  查看    
#7楼 [楼主]2008-06-07 18:45 | veter      
楼上的问题是?

  回复  引用  查看    
#8楼 2008-06-07 19:03 | 簡簡單單..      
Mark
  回复  引用  查看    
#9楼 2008-06-07 19:27 | 侯垒      
现在还是2005,还没有用上2008.
  回复  引用  查看    
#10楼 2008-06-08 11:03 | 紫色永恒      
友情提醒,是dll不是ddl
  回复  引用  查看    
#11楼 [楼主]2008-06-08 11:08 | veter      
--引用--------------------------------------------------
紫色永恒: 友情提醒,是dll不是ddl
--------------------------------------------------------
非常感谢你的!
  回复  引用  查看    
#12楼 2008-06-08 15:19 | BAsil      
支持一下
  回复  引用  查看    
#13楼 2008-06-08 21:17 | 汉城      
收藏~!
  回复  引用    
#14楼 2008-06-08 23:26 | 土豆网56.com电视剧 [未注册用户]
iis7强大了些。准备安装2008看看。
  回复  引用    
#15楼 2008-06-10 13:56 | 体彩 [未注册用户]
受益颇深,转走了哈
  回复  引用    
#16楼 2008-06-10 15:47 | 你的样子 [未注册用户]
非常感谢,我正愁这种问题怎么解决呢?
  回复  引用    
#17楼 2008-06-10 17:12 | 杜上小楼 [未注册用户]
我说说 iis6 里碰到的aspx页面无法显示的解决方法

iis管理--〉web扩展设置-->asp.net 设置成允许(默认禁止)。


  回复  引用  查看    
#18楼 [楼主]2008-06-11 07:35 | veter      
@杜上小楼
一起学习


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-08 11:08 编辑过


相关链接: