当我在Visual Studio中启动新的ASP.NET项目时,我可以创建ASP.NET Web应用程序,也可以创建ASP.NET网站。

ASP.NET Web应用程序和ASP.NET网站之间的区别是什么?为什么我会选择一个而不是另一个?

答案是否因我使用的Visual Studio版本而异?


当前回答

MSDN中有一篇文章描述了这些差异:

比较网站项目和Web应用程序项目

BTW:关于这个话题有一些类似的问题,例如:

Visual Studio中的网站与ASP.Net Web应用程序之比较注意:已删除,不再在SO中ASP.NET中的网站或Web应用程序

其他回答

除非您特别需要动态编译的项目,否则不要使用网站项目。

为什么?因为当你试图改变或理解你的项目时,网站项目会把你逼疯。Visual Studio中的静态类型查找功能(例如查找用法、重构)将永远适用于任何大小合理的项目。有关详细信息,请参阅Visual Studio中的堆栈溢出问题慢速“查找所有引用”。

我真的看不出他们为什么会放弃Visual Studio 2005中的web应用程序,因为它是一种令人痛苦、精神错乱、效率低下的网站项目类型。

这里Web支持应用程序是网站的一个示例。网站和Web应用程序都可以是动态/静态的,这取决于需求,这里有一个例子来理解网站和Web程序的工作。

网站:

网站项目是动态编译的。你最终会得到更多的DLL文件,这可能是一件痛苦的事。当一个目录中的页面或控件需要引用另一个目录的页面和控件时,这也会带来问题,因为其他目录可能尚未编译到代码中。另一个问题可能是出版。

如果Visual Studio没有被告知要经常重复使用相同的名称,它将为页面始终生成的DLL文件提供新名称。这可能导致具有包含相同类名的DLL文件的多个紧密副本,这将产生大量误差。网站项目是在VisualStudio2005中引入的,但事实证明它并不流行。

Web应用程序:

Web应用程序项目是作为外接程序创建的,现在作为一部分存在Visual Studio 2005的SP 1。主要区别在于Web应用程序项目设计为与Visual Studio 2003附带的Web项目类似。它将在构建时将应用程序编译为单个DLL文件时间若要更新项目,必须重新编译该项目,并且DLL文件发布以进行更改。

Web应用程序的另一个好特性从项目视图中排除文件要容易得多。在网站项目,您排除的每个文件都将重命名为文件名中的关键字。在Web应用程序项目中跟踪项目视图中要包含/排除的文件重新命名它们,使事情更加整洁。

参考

ASP.NET 2.0-网站与Web应用程序项目这篇文章也给出了为什么使用其中一个而不是另一个的原因。以下是摘录:

您需要将大型Visual Studio.NET 2003应用程序迁移到VS2005? 使用Web应用程序项目。您希望将任何目录作为Web项目打开和编辑,而不需要创建项目文件?使用网站项目您需要在编译期间添加预编译和后编译步骤吗?使用Web应用程序项目。您需要使用多个Web构建Web应用程序项目?使用Web应用程序项目。是否要为每个页面生成一个程序集?使用网站项目。您更喜欢动态编译和在不构建的情况下处理页面每个页面视图上的整个站点?使用Web现场项目。您更喜欢单页代码模型而不是代码隐藏模型?使用网站项目

Web应用程序项目与Web站点项目(MSDN)解释了Web站点和Web应用程序之间的差异。此外,它还讨论了在Visual Studio中进行的配置。

应用程序通常在部署之前编译,因为网站使用app_code目录。当应用程序代码文件夹中发生任何更改时,服务器将重新编译代码。这意味着您可以随时在网站上添加/更改代码。

应用程序的优点是无需重新编译,因此初始启动时间会更快。

这取决于你在发展什么。

一个以内容为导向的网站会经常改变其内容,而网站更适合于此。

应用程序倾向于将其数据存储在数据库中,其页面和代码很少更改。在这种情况下,最好有一个Web应用程序,其中程序集的部署更受控制,并且更好地支持单元测试。