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

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

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


当前回答

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

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

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

其他回答

网站和Project>>网站是使用visual studio创建ASP.NET应用程序的两种不同方法。一个是无项目的,另一个是项目环境。差异如下

解决方案文件存储在项目环境中与根目录相同的目录中。在项目环境中部署之前,需要删除解决方案和项目文件。完整的根目录部署在无项目环境中。

使用这两种方法都没有太大的基本区别。但如果您创建的网站需要更长的时间,请选择项目环境。

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

我建议您观看ASP.NET网站上的“Web应用程序项目和Web部署项目”视频,该视频非常详细地解释了差异,这对我很有帮助。

顺便说一句,不要被标题所迷惑,视频的很大一部分解释了网站项目和web应用程序项目之间的区别,以及为什么Microsoft在Visual studio 2005中重新引入web应用程序(正如您可能已经知道的那样,它最初只提供网站项目,然后在SP1中添加了web应用程序)。这是一个很棒的视频,我强烈推荐给任何想了解差异的人。

Web应用程序需要更多的内存,可能是因为您别无选择,只能编译成一个程序集。我刚刚将一个大型遗留站点转换为web应用程序,在编译时内存不足,错误消息如下:

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

错误,并在运行时显示以下错误消息:

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

我对在内存受限的传统硬件上转换大型站点的建议是,选择恢复到网站模型的选项。即使在最初的成功之后,问题也可能会在以后慢慢出现。

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

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

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

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