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

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

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


当前回答

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

其他回答

Web应用程序项目模型

提供与Visual Studio.NET Web相同的Web项目语义项目。具有项目文件(基于项目文件的结构)。构建模型-项目中的所有代码都编译为单个装配支持IIS和内置ASP.NET开发服务器支持Visual Studio 2005的所有功能(重构,泛型等)和ASP.NET(主页、成员资格和登录名,网站导航、主题等)。使用FrontPage服务器扩展(FPSE)不再是要求。

网站项目模型

没有项目文件(基于文件系统)。新的编译模型。动态编译和处理页面,无需构建整个站点在每个页面视图上。支持IIS和内置ASP.NET Development Server。每个页面都有自己的程序集。不同的代码模型。

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()

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

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

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

总结以上一些答案:

灵活性,您可以对网页进行实时更改吗?

网站:可能。赞成:短期利益。缺点:项目混乱的长期风险。

Web应用程序:不可能。编辑页面,将更改存档到源代码管理,然后构建和部署整个站点。专业:保持高质量的项目。

发展问题

网站:没有.csproj文件的简单项目结构。两个.aspx页面可以具有相同的类名,而不会发生冲突。随机项目目录名导致生成错误,如为什么.net框架与自己生成的文件冲突,以及为什么.net框架与其自己生成的文档冲突。专业人士:简单(简单化)。缺点:不稳定。

Web应用程序:项目结构类似于WebForms项目,具有.csproj文件。asp页面的类名必须是唯一的。专业:简单(智能)。缺点:没有,因为网络应用程序仍然很简单。

其中一个关键区别是网站动态编译和动态创建程序集。Web应用程序编译成一个大型程序集。

Visual Studio 2008中消除了两者之间的区别。