我正在寻找一种方法,使用C#.NET从MVC控制器重新启动当前正在运行的网站(来自管理页面)
为什么我需要它?我有一个网站的错误,但它只发生在网站运行一段随机的时间后,这使得它很难找到,同时我还需要一个远程方法,如果需要的话,可以快速从手机重启网站.
每当我想从应用程序中注销所有用户时,我都会使用一个非常简单的解决方案,即从 bin 文件夹内创建/删除(如果存在)一个虚拟 .dll 文件。
您可以将此 dll 文件命名为任何您想要的名称,但通过创建/删除它将重新启动整个应用程序(池)并解决您的问题。
此解决方案的优点在于您的 Web 应用程序不需要特殊权限。
ASP.NET 应用程序可能会因为很多原因重新启动。它可能比你想象的更频繁地发生。ASP.NET Web 应用程序将重新启动,因为:
- Web.Config 文件中的更改。更改任何参数,添加空格字符甚至更改文件的修改日期都会导致应用程序重新启动。
- 更改 machine.config,就像更改 web.config 一样。
- 在 /bin 文件夹中更改。如果您添加、更新或删除 /bin 文件夹中的任何文件,应用程序将重新启动。
- App_Code 文件夹中的更改。在 App_Code 中添加、删除或编辑类将导致应用程序重新启动。
- 更改 Global.asax 文件,如 web.config。
- App_LocalResources 文件夹中的更改
- App_GlobalResources 文件夹中的更改
- App_WebReferences 文件夹中的更改
- 配置文件配置的更改
- 已达到编译限制,由 machine.config 文件中的 numRecompilesBeforeAppRestart 定义。默认值为 15。ASP.NET 监视文件中的任何更改。当特定数量(默认为 15 个)的文件发生更改时,Web 应用程序会自动重新启动。这样做的原因是为了节省服务器上的内存。在某些动态生成文件的网站上,这可能会导致频繁重启。
- 防病毒软件更改文件的修改日期。防病毒程序会扫描 Web.config 或 Global.asax 等文件。一些防病毒程序会更改这些文件的修改日期,这会导致非常频繁的重启,从而降低网站性能。
- IIS 重新启动,所有网站也将重新启动。
- 更改 Web 应用程序的物理路径
- 由于不活动(默认为 20 分钟),IIS 回收了网站。如果网站没有访问者,IIS 会将其从内存中卸载以节省资源。当下一个访客来时,申请将再次开始。
这是我通常会重新启动应用程序的操作。
UnloadAppDomain从代码调用,尽管这样做需要完全信任权限。
System.Web.HttpRuntime.UnloadAppDomain()
故意更改 global.asax 或 web.config 文件的修改日期属性
File.SetLastWriteTimeUtc(MapPath("~/global.asax"), DateTime.UtcNow);
File.SetLastWriteTimeUtc(MapPath("~/web.config"), DateTime.UtcNow);
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |