如何在不停止站点的情况下更新 ASP.Net 站点 dll

Posted

技术标签:

【中文标题】如何在不停止站点的情况下更新 ASP.Net 站点 dll【英文标题】:How to update ASP.Net site dll without stopping site 【发布时间】:2009-10-21 17:02:32 【问题描述】:

是否可以在不停止 IIS 的情况下更新预编译站点的站点 dll。

目前,如果我尝试仅复制新文件以覆盖当前文件,则所有用户在复制文件时都会收到运行时错误。有没有办法避免这种情况?

【问题讨论】:

您可以先将文件上传到单独的文件夹,然后远程复制过程只需几分之一秒。 【参考方案1】:

即使不停止,对 web.config 文件、BIN 文件夹、App_Data 或 App_Code 的任何更改都会强制 .NET 编译器执行...

您将丢失内存中的所有 Session 变量。

我所做的是在 SQL 模式 中使用 Session State,如果您的系统是这样设置的,用户将留在站点中(经过较长时间的展示页面重新加载)

.NET 仍然会调用编译器来编译新的指令集,但很快就会完成,所有会话都将从 SQL Server 读取,并且因为它们仍然存在(并且不会因内存刷新而丢失)用户将使用当前凭据留在网站上。

它比 In-Memory Session State 慢一点,但更可靠,特别是共享主机 :) 这是增加/减少会话分钟数的方法,因为共享主机不允许它改变即使你这样做了

Session.Timeout = 5;

他们的机器配置将覆盖您所做的一切,使用 SQL 会话状态,您将能够设置您的时间,因为这一切都是由 SQL Server 完成的。

免费阅读this article 了解一切是如何完成的。

希望对你有帮助。

【讨论】:

@krlzlx read this answer,它会说同样的话,并给你一个关于一切正常的好帖子 @balexandre 使用 ssd 在 sql server 上存储凭据,使用磁盘存储其他数据怎么样 @balexandre 对于 IIS 上托管的 API,您有任何解决方案吗?你能补充一些关于 API 的东西吗? @balexandre “这篇文章”链接已损坏。

以上是关于如何在不停止站点的情况下更新 ASP.Net 站点 dll的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 Visual Studio 的情况下使用 ASP.NET MVC 实现站点?

在不刷新父页面的情况下更改 iframe src

在不刷新的情况下更新 IE10 固定站点的后退/前进按钮的颜色

如何将“聊天”集成到 ASP.NET MVC 站点中?

CSV 通过 ASP.NET 到 MySQL

站点在 asp.net System.Web.WebPages.Razor.Configuration.HostSection 中停止工作无法转换为