在win2003下搭建IIS并安装net2.0后运行aspx网站代码提示"HTTP 错误404 - 文件或目录未找到"郁闷了两天多,今天终于被我搞定了。
在这之前网上许多人都提到了以下提到的几点解决方法,但对我这种情况都无效,网上只提到用户访问权限与IIS默认禁止支持asp这两点。但最后我才发现一个很简单的原因,是net2.0安装有问题,因为win2003在默认情况下没有安装IIS,我当时是先安装的net2.0再安装的IIS,结果在IIS的站点的"web服务扩展"这一项中只显示有ASP.NET V1.1并不是ASP.NET V2.0,也就是说net2.0没有起作用,而我要运行的网站程序是基于net2.0开发的,因为在网上有网友发出的解决办法图片中都显示是ASP.NET V2.0,我就纳闷了自己明明安装的是net2.0为什么不显示2.0反而显示是1.1,所以就想起当时的安装顺序来,IIS的出的要比net早的多,只能是net基于IIS服务来为其提供支持,后来从官方网站和搜索的结果来看都推荐先安装IIS后安装net2.0,这正验证的我观点,重新将net2.0与IIS都卸载掉并重新安装IIS,再安装net2.0再重启再一看,正常"web服务扩展"这一项中除了ASP.NET V1.1外多了个ASP.NET V2.0,再设置IIS运行aspx网页一切正常,错误404宣告解除。
所以在此我将出现此错误的解决方法个人认为是比较全面的,整理如下:
1.注意IIS与net2.0框架的安装顺序,一定要在win2003下先安装IIS后安装net2.0,我就是因为顺序搞反了一直出错,建议在卸载完IIS与net2.0后重启电脑再重新按正确顺序安装。
2.网站所在目录的权限问题:权限要有asp.net计算机帐户,user,反正我这两个就够了,有的环境中还要打开IIS_WPG,Network Services这两个权限,在我的环境里我做过试验去掉这两个权限只保留上边两个没影响,但不保证通用哟。
3.网站名称右键属性中asp.net选项卡中版本选择要确定是2.0不是1.1和1.0,当然如果你的网站代码开发时是基于net1.0的非net2.0那是不必修改的,否则一定要修改。
4.IIS->WEB服务扩展中->ASP.NETV2.0是保证是允许状态不是的话赶紧改,不然相当于net2.0没起作用。
5.IIS->主目录->配置->选项->启用父路径打上对勾。
6.网站名称右键属性->文档->启用默认文档->并正确设置了相应的默认页。
7.还有一点是IIS->主目录->配置->通配符应用程序映射(执行顺序)这一项要将需要的asp或aspx应用程序插入进来,asp的是C:\WINDOWS\system32\inetsrv\asp.dll,aspx的是c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,但我在架设自己的网站程序时该项目没有修改是默认无映射的情况也可以正常运行,这点并不是所有人的所有服务器环境都适用的。
8.IIS(Internet 服务器)- Web服务扩展 -> Active Server Pages -> 右键点击该项再左键点击"允许"
9.IIS(Internet 服务器)- Web服务扩展 -> 在服务端的包含文件 -> 右键点击该项再左键点击"允许"。
注意事项:在给网站目录权限时,建议不要给everyone权限,这个权限太大了同时潜在的安全风险也大,还有我目前给的asp.net计算机帐户,user这两个权限也只开放了读的权限,完全控制与修改的权限没给,目前我的网站程序运行没问题,不过有特殊情况的可以开放完全控制与修改的权限。
在架设IIS过程中我还遇到一个奇怪现象:就是不管我的IIS与sql怎么设置包括权限的设置我在前台就是看不到.net网站的动态内容,只显示一些html的图片和js的显示效果,文章一篇章都没有,但是进入网站后台从登录到使用后台的东西一点问题都没有,从后台查看网站添加的文章均显示正常,太郁闷了。后来我试着把网站主目录加了完全控制与修改的EveryOne权限。再一刷新,网站前台东西一切正常,文章都出来了。接着我又去掉了了EveryOne权限,重新刷新前台还是正常的,并没有恢复刚才不显示动态内容的现象,这一点我一直没搞清楚,开始我一直以为是数据库连接问题,但从后台登录一切正常证明不是数据库连接问题,我觉得不是IIS就是权限反正是它们之间有冲突导致。如果哪位大侠知道还请讲解。
本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2013/02/14/2912553.html ,如需转载请自行联系原作者