逐步更新asp.net网站?

时间:2010-02-02 10:25:49

标签: asp.net

有没有一种很好的方法可以在不重新发布整个网站的情况下对asp.net网站进行增量更改?

我正在将旧网站从经典的asp转移到asp.net,而网站上曾经发生过的事情之一就是单独更改单个页面。该站点只在一台服务器上,并且有很多文件,因此重新发布会使整个站点暂停一段时间。我想避免这种情况,或者至少让时间尽可能短。

每个页面都有一个代码隐藏文件,并且App_Code中的每个页面都使用了一些东西(以防万一会改变答案)。

6 个答案:

答案 0 :(得分:4)

如果您正在构建一个Web站点(而不是Web应用程序,其中所有代码都编译为/ bin文件夹中的.dll),并且听起来就像您那样,那么您确实只能部署那些具有的文件已更改为服务器 - 最多为计算机{web}文件中numRecompilesBeforeAppRestart/app_code中设置的值 - 默认为15。

如果您将更改部署到{{1}}文件夹,则会导致重新编译该网站,因为这是一个共享区域。

有一点需要指出:在VS2008及更低版本中,发布站点命令通常会发布整个站点 - 我相信这在VS2010中要好得多,因为它更容易只发布已更改的文件 - 所以这需要手册部署变更。

答案 1 :(得分:2)

您可以将Visual Studio设置为生成固定的程序集名称。对于每个页面(master,ascx),将生成一个程序集,并且它将始终具有相同的名称。使用此选项,您只能更新已更改的文件。无论如何请记住,此操作容易出错,因为您失去了对程序集交互(如果有)的自动控制,因此如果出现问题,您可能会遇到运行时错误。 最后,如果你有很多页面,这种模式的性能将会降低。

http://msdn.microsoft.com/en-us/library/aa992037.aspx

答案 2 :(得分:1)

可以将Web应用程序划分为单独的类库。这样,您可以重新编译并将相关的DLL放入已发布的bin目录中,而无需发布整个站点。在类库中添加版本号有助于识别它。通过调用这些类库中的方法,使代码隐藏在文件后面。

答案 3 :(得分:0)

为什么网站没有多个文档根,一个是'live',另一个是'staging'。将更改发布到“临时”区域,检查并测试,然后在IIS中切换文档根目录(实时进入暂存状态,暂存变为活动状态) - 这会使网站停机一段时间以回收应用程序所需的时间游泳池等等。将旧的“live”更新为新的代码库,等待下次需要更新时。

答案 4 :(得分:0)

默认情况下,当用户第一次请求页面时,动态编译ASP.NET页面和相应的代码隐藏,这样当您只进行几次更新时,您真的不需要重新发布整个站点。您只能发布这些文件。

答案 5 :(得分:0)

将应用程序划分为多层体系结构,仅部署已更改的程序集。要识别依赖关系,我们是否应该部署他们引用的库/服务也不取决于兼容性问题..就像我们只更改接口内部代码或者我们是否更改了方法(接口)的签名... 一篇包含正确部署N层应用程序的详细信息http://www.codeproject.com/Articles/430014/N-Tier-Architecture-and-Tips#How的好文章

HIH, 帕尼