Tul*_*ika 5 deployment iis asp.net-mvc
将更改部署到网站的最佳方式是什么(替换dll和其他所需文件)?
是应该停止并启动网站还是应该停止并启动应用程序池?
我读到当网站停止时,它仍然在内存中加载了应用程序状态.在这种情况下,是否会提供旧请求?可以毫无问题地更换dll吗?网站启动时如何重新加载内容?
当应用程序池停止时,它是否会继续提供旧请求?如果是,考虑到网站现在包含已更改的dll,旧请求如何得到服务?
将更改部署到网站(替换 dll 和其他所需文件)的最佳方法是什么?
最好的方法是使用Web 部署来自动化该过程。它会自动比较文件,仅替换需要的内容并删除不需要的内容,使其非常快速、高效且可靠。
应该停止并启动网站还是应该停止并启动应用程序池?
您通常不必执行任何操作。但是,如果您想在升级过程中阻止访问您的网站,并且升级预计需要几秒钟以上的时间,那么您可以停止该网站并启动另一个使用相同 IIS 绑定的网站,并显示“应用程序正在维护中” “ 信息。
我读到,当网站停止时,它仍然在内存中加载应用程序状态。在这种情况下,旧的请求会得到满足吗?替换dll可以没有问题吗?网站启动时如何重新加载内容?
HTTP 协议是无状态的。因此,大多数更新的内容将从服务器上的新文件重新加载。
有一些例外。
如果您使用进程外会话状态,即使重新编译并重新加载应用程序,状态也将保留。不过,通常情况下,您希望会话状态中的数据能够在升级后继续存在。
如果您正在使用缓存(System.Web.Caching或System.Runtime.Caching),并且指定将其设置为“不可删除”,则缓存的数据将保留。通常,我使用应用程序的单个文件作为缓存依赖项,因此当在服务器上编辑(或替换)该文件时,缓存将被重置。
输出缓存没有缓存依赖性。通常它会一直存在,直到应用程序池重新启动为止。但是,您可以看到此答案,以手动方式重置它,而无需重置应用程序池。
Cookie 存储在远程客户端计算机上。因此,它们将在升级后完好无损。
静态文件(图像、CSS 和 JavaScript 文件)通常缓存在远程客户端计算机上。因此,当您进行升级时,将查询字符串附加到这些 URL 的末尾会很有帮助,以确保不使用缓存的文件。请参阅本文了解其中一种方法。
当应用程序池停止时,它会继续服务旧的请求吗?如果是,考虑到网站现在包含更改后的 dll,旧请求如何得到满足?
正如我已经提到的,HTTP 协议是无状态的。服务器不会重放客户端以前发出的任何请求。一旦客户端收到响应,服务器基本上就会忘记它们。
Web 服务器处理升级的很多方式取决于它是 Web 应用程序还是网站(如果是网站,则取决于它是否已预编译)。如果应用程序在升级期间运行,尝试访问它的用户可能会看到错误。
我的建议是:别担心。将升级安排在非高峰时间。使用 Web 部署自动化该过程,使升级窗口尽可能短。并使用上述技术来确保缓存数据和内容得到适当重置。在大多数应用中,半夜几秒或几分钟的停机时间几乎不会被注意到。
| 归档时间: |
|
| 查看次数: |
2311 次 |
| 最近记录: |