asp.net-mvc – 部署网站的最佳方式 – 应用程序池启动停止或网
将更改部署到网站的最佳方式是什么(替换dll和其他所需文件)?
是应该停止并启动网站还是应该停止并启动应用程序池? 我读到当网站停止时,它仍然在内存中加载了应用程序状态.在这种情况下,是否会提供旧请求?可以毫无问题地更换dll吗?网站启动时如何重新加载内容? 当应用程序池停止时,它是否会继续提供旧请求?如果是,考虑到网站现在包含已更改的dll,旧请求如何得到服务? 解决方法
最好的方法是使用Web Deploy来自动化该过程.它会自动比较文件并仅替换所需内容并删除不需要的文件,从而使其非常快速,高效和可靠.
您通常不必这样做.但是,如果您希望在升级期间阻止访问您的网站并且升级预计需要几秒钟,那么您可以停止该网站并启动另一个使用相同IIS绑定的网站和“维护中的应用程序” “ 信息.
HTTP协议是无状态的.因此,大多数更新的内容将从服务器上的新文件重新加载. 有一些例外. 如果您使用的是out-of-process session state,则即使重新编译并重新加载应用程序,也会保持状态.通常,您在会话状态中拥有的数据是您希望在升级后继续存在的数据. 如果您正在使用缓存(System.Web.Caching或System.Runtime.Caching),如果您指定使其“不可删除”,则缓存的数据将保留.通常,我将单个文件用作应用程序作为缓存依赖项,因此当在服务器上编辑(或替换)该文件时,将重置缓存. 输出缓存没有缓存依赖性.通常它会一直存在,直到重新启动应用程序池.但是,您可以看到this answer手动方式重置它而不重置应用程序池. Cookie存储在远程客户端计算机上.因此,它们将在完整升级后继续存在. 静态文件(图像,css和javascript文件)通常缓存在远程客户端计算机上.因此,当您进行升级时,将查询字符串附加到这些URL的末尾以确保不使用缓存文件会很有帮助.有关此类方法,请参见this article.
正如我已经提到的,HTTP协议是无状态的.服务器不会重播客户端以前发出的任何请求.一旦客户端收到响应,服务器就会忘记它们. Web服务器处理升级的很多方式取决于它是Web应用程序还是Web站点(如果是网站,是否已经预编译).如果应用程序在升级期间运行,则尝试访问它的用户可能会看到错误. 我的建议是:不要担心.安排非高峰时段的升级.使用Web Deploy自动执行此过程,以使升级窗口尽可能短.并使用上述技术确保缓存的数据和内容得到适当重置.在大多数应用程序中,半夜或几分钟的停机时间几乎没有引起注意. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在ValidationSummary上动态显示bootstrap的周围
- asp.net – 动态地向表中添加行
- asp.net – Owin Middleware vs ExceptionHandler vs HttpM
- entity-framework-4 – 在多层体系结构中使用Autofac
- asp.net – 在usercontrols之间共享数据
- asp.net-mvc – 如何创建文件并通过ASP.NET MVC中的FileRes
- asp.net – 我的C#Web应用程序项目中缺少IdentityConfig.cs
- asp.net-mvc – 将Linq2Sql对象传递给Views有什么问题?
- asp.net-mvc – 如何在Asp.Net MVC循环中呈现纯HTML链接?
- asp.net-mvc – 带可选参数的MVC路由
- asp.net – WCF,WebAPI和OWIN IIS集成管道.根据路
- asp.net-web-api – 带有json有效负载中令牌的We
- 如何在ASP.NET MVC模型中为POST保存选定的DropDo
- asp.net – 带有VS2010 SP1的IIS Express不断重建
- asp.net – 是否值得在IIS7中启用动态压缩?
- 如何使用ASP.Net SqlBulkCopy将常量值插入到列中
- 在WebApi Core ConfigureServices中访问services
- asp.net-mvc – HtmlHelper与Partial的表现
- asp.net-mvc-3 – 如何避免使用MVC3 FileContent
- asp.net – SQL Server用户定义的表类型和.NET