【问题标题】:Restart ASP.NET application when folder contents change文件夹内容更改时重新启动 ASP.NET 应用程序
【发布时间】:2008-12-01 09:46:31
【问题描述】:

我正在编写一个带有“插件”的网络应用程序。插件将是 .DLL 文件,它们将通过预定义的接口导出其功能。所有 .DLL 文件都位于名为“Plugins”的文件夹中,ASP.NET 应用程序在启动时将它们全部加载(通过使用 Assembly.LoadFrom)。

问题是在开发时,这些插件会经常变化(所有功能都在插件中,网站本身只是一个骨架)。因此,我需要一种在 .DLL 文件更改时自动重启应用程序的方法。

我该怎么做?

【问题讨论】:

  • 您知道我不是 100% 确定,但如果您在运行时更改 dll,我会感到印象深刻重新加载并丢弃所有会话等。
  • 也许如果它们在“bin”文件夹中,我还没有尝试过。但它并不关心“插件”文件夹。 :P
  • 哦我明白了,把plugins文件夹放到bin文件夹里

标签: asp.net monitor restart


【解决方案1】:

如果 plugins 目录位于您的 Bin 目录下,则当有任何更改时,Web 应用程序将自动重新启动。

【讨论】:

  • 酷 :) 现在如果你能让它在其他目录下工作就好了。
【解决方案2】:

FileSystemWatcher 类是此类问题的通用解决方案,HttpRuntime.UnloadAppDomain(); 是重启应用的一种方法。我认为需要更多的研究/解释:有很多可能的解决方案。

编辑:探测路径。不错的答案。

【讨论】:

  • HttpRuntime.UnloadAppDomain() 真的会在后续请求中再次启动应用程序吗?
  • 是的,它会的。尽管旧版本仍会提供此请求。我会看看我是否可以将它与 FileSystemWatcher 结合起来。
  • 实际上 IIRC UnloadAppDomain 将终止当前请求(虽然不是 100%),但它会在下一个请求时重新启动(100%)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2022-07-29
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多