IIS文件存在但报404问题解决

技术分享 Story 67浏览 0评论

遇到一个奇怪的问题,在IIS7.5中,一些样式和JS文件存在,但访问就是报404.

根据网上搜索到的解决方法,发现解决不了,不同同样的问题引起的。

网上解决:

1、没有配置合适的MIME信息,通过添加合适的MIME信息来解决。

打开IIS配置,看了下,已经添加了样式文件的了,所以不是这个问题。

 

2、重新注册.net framework,原因是先安装的.net后安装IIS,没启用.aspx页面访问

HTTP 错误 404.2 - Not Found  由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。

打开IIS,右边操作里选基本设置,应用程序池旁边点选择,模式改成Classic ,

就是将管理模式切换为了经典模式。

出现环境:win7 + IIS7.0

解决办法:IIS的根节点->右侧“ISAPI和CGI限制”->把禁止的DotNet版本项设置为允许,即可~ 如果没有的可以自行添加,路径如下图示:

这个也不对,因为不是刚刚安装的,已经运行了很久的了,而且其它站点也正常。

 

后来又在网了搜索了很久,没找到思路。

怀疑是路径跳转不正确,所以配置webconfig列出了文件列表,想确认文件存在。

遂层点击查询,发现是文件名带有“.”的目录访问不正常,报4040.

 

转到服务器本地访问,查看原因(因为在外面访问是不呈现详细错误信息的)。

看到,样式文件和JS文件所有的目录访问是被UrlScan拒绝了。

查看UrlScan日志

应该上是这个UrlScan配置有问题了,于上找一下配置的文章,修改配置,解决了。

参考:http://www.cnblogs.com/ttzhang/archive/2010/04/27/RunPhpOnIIS7viaFastCGI.html

解决方案:

是UrlScan拒绝了该请求,在UrlScan的日志目录C:\Windows\System32\inetsrv\urlscan\logs\中打开一个日志文件,发现很多类似 "Rejected URL+contains+high+bit+character URL"的记录,这又是为什么呢???原来IIS7.0上安装UrlScan后,所有的请求都会经过aspnet_filter和Request Filtering的过滤,Request Filtering的过滤规则就在UrlScan的安装目录C:\Windows\System32\inetsrv\urlscan\UrlScan.ini文件中,其中有这样一个规则AllowHighBitCharacters=0,IIS官网的解释是: This feature either allows or rejects all requests to IIS 7 that contain non-ASCII characters and logs the error code 404.12,允许或拒绝所有包含非ASCII字符的请求并在日志中记录404.12错误,该规则默认为0,也就拒绝包含高位字符的请求 URL。我们将AllowHighBitCharacters的值改为1,图片终于可以正常显示了。

转载请注明:成长的对话 » IIS文件存在但报404问题解决