当我在Visual Studio中启动新的ASP.NET项目时,我可以创建ASP.NET Web应用程序,也可以创建ASP.NET网站。
ASP.NET Web应用程序和ASP.NET网站之间的区别是什么?为什么我会选择一个而不是另一个?
答案是否因我使用的Visual Studio版本而异?
当我在Visual Studio中启动新的ASP.NET项目时,我可以创建ASP.NET Web应用程序,也可以创建ASP.NET网站。
ASP.NET Web应用程序和ASP.NET网站之间的区别是什么?为什么我会选择一个而不是另一个?
答案是否因我使用的Visual Studio版本而异?
当前回答
这取决于你在发展什么。
一个以内容为导向的网站会经常改变其内容,而网站更适合于此。
应用程序倾向于将其数据存储在数据库中,其页面和代码很少更改。在这种情况下,最好有一个Web应用程序,其中程序集的部署更受控制,并且更好地支持单元测试。
其他回答
这取决于你在发展什么。
一个以内容为导向的网站会经常改变其内容,而网站更适合于此。
应用程序倾向于将其数据存储在数据库中,其页面和代码很少更改。在这种情况下,最好有一个Web应用程序,其中程序集的部署更受控制,并且更好地支持单元测试。
在Web应用程序项目中,Visual Studio需要用于页面和用户控件的其他.designer文件。网站项目不需要此开销。标记本身被解释为设计。
MSDN中有一篇文章描述了这些差异:
比较网站项目和Web应用程序项目
BTW:关于这个话题有一些类似的问题,例如:
Visual Studio中的网站与ASP.Net Web应用程序之比较注意:已删除,不再在SO中ASP.NET中的网站或Web应用程序
其中一个关键区别是网站动态编译和动态创建程序集。Web应用程序编译成一个大型程序集。
Visual Studio 2008中消除了两者之间的区别。
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()
我对在内存受限的传统硬件上转换大型站点的建议是,选择恢复到网站模型的选项。即使在最初的成功之后,问题也可能会在以后慢慢出现。