症状
如果您使用 Visual Studio .NET 2002 新建 Web 项目,并连接到作为 Web 服务器的 Microsoft Windows Server 2003,则会显示“Web 访问失败”对话框,并且您会收到以下错误信息:
The default Web access mode for this project is set to file share, but the project folder at 'http://localhost/WebApplication1' cannot be opened with the path 'c:\inetpub\wwwroot\WebApplication1'.The error returned was:
Unable to create web project 'WebApplication1'.The file path 'c:\inetpub\wwwroot\WebApplication1' does not correspond to the URL 'http://localhost/WebApplication1'.The two need to map to the same server location.HTTP Error 404:Not Found
原因
发生此问题的原因在于:Microsoft Internet 信息服务 6.0 (IIS) 阻止所有未显式映射的文件扩展名。默认情况下,出于安全原因,未在 IIS 6.0 上映射 .tmp 文件扩展名。
在创建 Web 项目的过程中,Visual Studio .NET 2002 会进行测试以确认 URL 和 UNC 路径是否匹配。为此,Visual Studio .NET 将文件扩展名为 .tmp 的文件写到服务器上,然后通过 http 请求从该服务器中请求此文件。因为没有在 IIS 6.0 上映射 .tmp 文件扩展名,所以 IIS 会返回 HTTP 错误 404。这就导致 Visual Studio .NET 返回“症状”部分中介绍的错误信息。
注意:当您使用 Visual Studio .NET 2003 时不会发生此问题,因为此版本使用文件扩展名为 .htm 的文件执行此过程。
替代方法
解决此问题的办法有下列三种:
解决办法 1:
使用 Visual Studio .NET 2003 在 Windows 2003 Server 上创建项目。这是推荐使用的解决办法。如果生产计算机连接到 Internet,则最好使用此版本,因为映射 .tmp 文件扩展名可能具有安全风险。
解决办法 2:
如果安全不成问题(例如,如果您使用的是独立的开发计算机),请执行下列步骤来映射 .tmp 文件扩展名:
启动 Internet 信息服务 MMC。
右键单击 Web 站点,然后单击“属性”。
单击“HTTP 标题”选项卡,然后单击“MIME 类型”。
单击“新建”以添加新的 MIME 类型。
在“扩展名”文本框中,键入 .tmp。
在“MIME 类型”文本框中,键入 text/plain。
解决办法 3:
安装以下 Microsoft 知识库文章中的修复程序:
831210 FIX:Cannot Create Web Projects on Windows Server 2003
状态
Microsoft 已经确认这是本文开头列出的 Microsoft 产品中的错误。 正在审查此错误的修补程序以便在以后的 Service Pack 版本中发布。
重现问题的步骤
1. 启动 Visual Studio .NET 2002。在“文件”菜单上,指向“新建”,然后单击“项目”。
2. 对于项目类型,单击“ASP.NET Web 应用程序”。
3. 在“位置”文本框中,指定一台运行 Windows 2003 且没有映射 .tmp 文件扩展名的计算机。
4. 单击“确定”。