我有一个运行 Server 2003 Datacenter 和 IIS 5 的 Web 服务器,它托管着各种 ASP.NET 2.0 网站。我试图添加一个通过 VS2010 Beta 编写的 ASP.NET 4.0 网站,并且我在服务器上安装了 .NET 4.0 Beta 1。
该网站似乎配置正确;匿名访问已打开,它指向正确的文件夹,并设置为 asp.net 4.0。
为什么当我在本地和远程浏览它时,它会给我 404 错误?
答案1
日志记录是否已打开?如果没有,请将其打开。如果已打开,请检查是否将相应条目写入日志文件,并检查其所有详细信息是否匹配。
如果没有写入任何条目,则可能是 IIS 中的错误网站正在为您的请求提供内容(请检查其正在监听的主机名)。
最后,您确定它是 IIS 5 吗?我以为 2003 附带 IIS 6?
答案2
IIS 中的 404 子状态 2 表示:“Web 服务扩展锁定策略阻止了此请求。”,IIS7 上针对 404.2 更友好的消息表示“由于 Web 服务器上的 ISAPI 和 CGI 限制列表设置,无法提供您请求的页面。”
请查看以下知识库文章以了解可能的修复方法:
http://support.microsoft.com/kb/328419/ http://support.microsoft.com/kb/328505/ http://support.microsoft.com/kb/328360/
在 IIS6 和 7 中,http 子状态包含重要信息,请检查完整列表:
IIS5 和 6:support.microsoft.com/kb/318380
答案3
您只需要在 IIS 中启用 ASP.NET 4.0 的 Web 扩展。
答案4
检查 metabase.xml 文件...WebSvcExtRestrictionList 中 Framework\V4.0.21006 的行开头是否有“1”?
我遇到了同样的问题,将其设置为“1”(启用)解决了该问题。ASP.NET 4.0 Beta 1 没有这个问题。该问题仅在安装 ASP.NET 4.0 Beta 2 时出现。
修复问题之前的情况如下:
WebSvcExtRestrictionList="0,C:\SERVER\system32\inetsrv\httpodbc.dll,0,HTTPODBC,Internet Data Connector
0,C:\Perl\bin\perlis.dll,1,,Perl ISAPI Extension
0,C:\SERVER\system32\inetsrv\httpext.dll,0,WEBDAV,WebDAV
0,C:\Perl\bin\PerlEx30.dll,1,,PerlEx ISAPI Extension
0,C:\Perl\bin\perl.exe "%s" %s,1,,Perl CGI Extension
1,C:\SERVER\system32\inetsrv\asp.dll,0,ASP,Active Server Pages
1,C:\SERVER\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,0,ASP.NET v2.0.50727,ASP.NET v2.0.50727
0,*.exe
0,*.dll
0,C:\SERVER\system32\inetsrv\ssinc.dll,0,SSINC,Server Side Includes
0,C:\SERVER\Microsoft.NET\Framework\v4.0.21006\aspnet_isapi.dll,0,ASP.NET v4.0.21006,ASP.NET v4.0.21006"