【问题标题】:Restarting an app pool using asp.net (IIS7)使用 asp.net (IIS7) 重新启动应用程序池
【发布时间】:2009-12-15 13:03:57
【问题描述】:

我需要从代码中重新启动应用程序池,有人知道该怎么做吗? 我看过很多 iis6 的例子,大多数 cmets 都是“它不起作用”

所以有什么想法,或者无论如何让 IIS 监视文件并在文件更改时重启应用程序池?

【问题讨论】:

  • 导致应用程序池重新启动的文件更改听起来不是一个非常可靠的解决方案。你能详细说明你为什么这样做吗?
  • 我们这样做是因为我们正在使用 url rewrite 1.1 并且我们需要在每次 url 更改时重新启动应用程序池,因为它会在池启动时将它们存储在内存中。 url 由管理系统在 webconfig 的外部文件中生成。

标签: asp.net iis-7 iis-7.5


【解决方案1】:

我认为,使用application pool class 是可行的方法。

善良,

【讨论】:

  • 非常感谢,我已经下载了 iis7 sdk 但仍然没有库?有什么想法吗?
  • 我想我在这里找到了 dll:%WinDir%\System32\InetSrv 会试一试
  • 好吧,除非我使用管理员帐户作为 appPool 用户,否则我会拒绝访问以重新启动 appPool,但这不是一个好主意。有什么想法应该允许哪些小组这样做?
  • 如何为您的应用创建自己的组和用户?
【解决方案2】:

实际上在 web.config 末尾附加一个空格 ' ' 会导致应用程序重新启动。

在 web 应用程序文件夹 (inetpub\wwwroot\webapp) 中创建一个 bat 文件 (rest.bat)

echo   >> web.config

如果你运行批处理文件,你会得到一个循环

【讨论】:

    【解决方案3】:

    更简单的方法.. 当您正在查看的文件发生更改并且您想要回收应用程序时,只需更改 Web.config 中的一个键,为什么不这样做。对 Web.config 的任何更改都会导致您的应用程序循环使用..

    【讨论】:

      【解决方案4】:

      为什么不使用基于文件的缓存依赖项,而不是这样做(回收池)?有一个使用 xml 文件执行此操作的示例here。这样就不会再有应用回收了。

      XmlDocument urls = new XmlDocument();
              urls.Load(Server.MapPath("pathetourlfile.xml"));
              CacheDependancy dependancy = new CacheDependency(Server.MapPath("pathetourlfile.xml"))
              Cache.Insert("URLS", urls, dependency)
      

      【讨论】:

      • 感谢您的示例,我们刚刚删除了整个应用程序池重启代码,因为我们找到了一种更好的方法来做我们想做的事情(回到我在 IIS6 中的方式,我们只是缺少 webconfig 的一个元素)。 :)
      猜你喜欢
      • 2012-03-28
      • 2012-05-24
      • 2010-12-02
      • 2010-09-17
      • 2010-09-19
      • 2014-02-13
      • 2011-11-04
      • 2011-10-17
      • 2018-11-25
      相关资源
      最近更新 更多