IIS 7.5 (Windows 2008) 上运行ASP.NET 4.0程序报404错误的解决办法
起因
周四我拿到一台Windows 2008的虚拟机,准备在上面部署一个ASP.NET站点。
我把本地的站点编译好之后,删除了所有的.cs文件,然后传到虚拟机上。
虚拟机上IIS版本是7.5,安装了.Net Framework 4.0,在IIS中开启了对ASP.NET
的支持。按理说就能运行HRM了。
但是运行时,IE提示404错误,也就是找不到网页。这可奇怪了,明明存在的页面,为什么找不到呢?
尝试
我试着打开一个xml文件,打开了。又把default.aspx改名为default.html,也能打开,为什么偏偏default.aspx提示404呢?
此时打开IIS的Log文件,看不出任何异常。
2011-05-22 04:29:23 ::1 GET /hrp/ - 80 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 404 0 0 7656
彻底没辙了。
于是乎,google一下,看看其他人遇到过类似的问题吗。还真有,不过他们的解决办法都不适合我。
无意中发现
无意中发现,原来IIS7可以装一个叫Tracing的服务。
装好之后,选择需要跟踪的站点,点击图中右下角所示的Failed Request Tracing…
开启跟踪,并设定日志目录。
再次尝试打开aspx文件,然后查看日志。
逐步查看日志内容,会发现一个叫GENERAL RESPONSE ENTITY BUFFER的节,内容跟我们看到的404页面差不多。
真正原因
发现后面多了一些.NET的错误,终于发现,原来发生404错误的真实原因是少了一个叫ATSModuleSetUp.aspx的文件,缺少这个文件会引起default.aspx错误的元凶在于Spring.net,可能它会读取所有aspx文件,以便注入。
重新部署一下站点,问题解决。
推论
- 404错误提示信息还是很有用的,不过很隐晦,它说HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed。
- 对于所有web上的错误,最好查看显示页面的源文件,即使是看似标准的404页面也要查看源文件。上面的那些.NET错误信息虽说是在Tracing的Log中发现的,但是同样存在于404页面的源文件中。。。
- 发生这种错误后,应该写个Hello,World程序来测试一下IIS,就不用绕这么多弯路了,不过现在也学到了如何使用Tracing功能
- ← Previous
美女来到了我身边 - Next →
升级到ASP.NET 4.0后JS报错的解决办法