首页 > 代码库 > Errore HTTP 404.2 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理

Errore HTTP 404.2 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理

今天配置本地iis出现了一些问题,第一个是出现cgi等错误,iis重新安装后(大部分功能都打勾了)还是不能解决,选择iis服务器根目录,选择isapi和cgi限制,跟服务器iis对比了下,发现里面只有asp.net v2.0,于是添加了一个4.0,windows目录下的Microsoft.NET/Framework/v4.0.30319/aspnet_isapi.dll,问题解决

第二个问题是直接加了个默认目录是index.aspx,用了url重写,出现Errore HTTP 404.2 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理,最后,用visualstudio tools下的x64命令提示符,打上aspnet_regiis -i     解决,下面是解决方案

 

 

如题,这个错误google时一大堆各种各样的解决办法,但具体原因就没怎么详细介绍,

404.2就一个http status code, 在msdn上说:404.2 - ISAPI or CGI restriction  即IIS里的“ISAPI 或CGI 限制” 的配置有问题,

      “ISAPI” 是供IIS加载和调用的DLL, 如果没配置相关的ISAPI,就无法正确地解释网页的内容,

之所以会抛出后面“请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”的错误信息,极有可能是没配置相关ISAPI对页面进行解释,导致IIS默认把页面当作静态文件来解释,所以出错,

比如:用net4.0来开发的网站,但ISAPI没配置有"ASP.Net_4.0_32bit"的DLL来对页面程序进行托管,那么IIS肯定无法正确的运行aspx里的C#代码,

 

解决方案:

1)先确认网站是基于那个netframework; 

2)  然后到“应用程序池”里找网站对应的应用程序池(右击网站-> 高级设置),双击程序池, 看程序池是否也网站的net framework版本相同,

注意:net2.0,net3.0,net3.5对应的net framework版本都是v2.0.50727,而net4.0则基于v4.0.30319

3)  右击网站对应的 ”应用程序池 -> 高级设置“ 看”启用32位应用程序“,如果网站是以32编译的就要设为true, 否则为false, 一般都是32编译的,所以都选为true;

4) 如果上面的配置都没错,那就到问题的本质部分,即ISAPI的配置:

a.选中网站->功能视图-> 双击 ISAPI筛选器;

b.查看是否有与网站所基于的framework 对应的DLL,  net2.0,3.0,3.5对应的DLL是ASP.Net_2.0.50727.0, net4.0是ASP.Net_4.0_32bit或ASP.Net_4.0_64bit;

c.若没有对应的DLL,有可能是没装好IIS,即漏掉了东西,如果不知选择装哪些部分,就应该完整的把整个IIS装完;

5)如果装了vs再装iis必须得对net framework 重装一次, 运行cmd,输入:

C:\Windows\Microsoft.NET\Framework\V4.0.30319\aspnet_regiis -i     

注:C:\Windows\Microsoft.NET\Framework\V4.0.30319\   是 netframework安装对应的路径;

如下图:

技术分享

6)重启一下iis, 理论上应可以解决导致404.2 not found 的大部分问题了;

Errore HTTP 404.2 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理