Skip to main content
黑话筒

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文件,以便注入。

重新部署一下站点,问题解决。

推论

  1. 404错误提示信息还是很有用的,不过很隐晦,它说HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed。
  2. 对于所有web上的错误,最好查看显示页面的源文件,即使是看似标准的404页面也要查看源文件。上面的那些.NET错误信息虽说是在Tracing的Log中发现的,但是同样存在于404页面的源文件中。。。
  3. 发生这种错误后,应该写个Hello,World程序来测试一下IIS,就不用绕这么多弯路了,不过现在也学到了如何使用Tracing功能