2013-12-17 29 views
3

我需要知道部署ASP.NET MVC应用程序的新版本的最佳做法,同时用户仍连接到它部署ASP.NET MVC的生产,而用户仍然在线

每次一个展开时包含应用程序的模型和控制器的.dll,应用程序将重新启动。同时部署web.config(最终引用新库)会导致重新启动应用程序。

因此,问题是:如何更新应用程序的dll或web.config,而无需断开用户与网站的连接?

+0

什么youre寻求的是热部署,其诚实(我不知道很多),但我真的认为这个问题属于serverfault,在那里你可以找到更多的信息 – Jorge

+1

定义“连接到它的” 。你使用in-proc会话吗? –

+0

如果“会话模型”发生更改,这可能是不可能的,因为即使保留用户的会话,存储在其中的对象也可能会失效。 –

回答

1

您希望使用除使用in-proc之外的其他会话状态选项,以便您的用户在进程回收或系统重新启动时保留下来。

InProc:In-Proc模式将值存储在ASP.NET辅助进程的内存中。因此,这种模式提供了对这些值的最快访问。但是,当ASP.NET辅助进程回收时,状态数据将丢失。

请参阅ASP.NET Session State Options了解更多ASP.NET选项和其他第三方会话状态提供者的提及。

这个问题也有可能部署方案涉及以帮助一池回收后的负荷和缓慢的应用程序倍以下网站:How are people solving app pool recycle issues on deployment with large apps?

理想情况下,你想,你可以为无状态,并从会话望而却步。例如,您可以使用cookie通过表单身份验证来跟踪当前用户。但是您必须使用分布式缓存/会话提供程序远离进程,以便用户不会在应用程序池回收中丢失会话状态。