使用外部配置重写映射以强制应用程序池回收

时间:2009-07-23 17:32:45

标签: c# iis-7 mod-rewrite url-rewriting

我在web.config中定义了以下内容(

<rewriteMaps configSource="Rewrites.config"  />

我有一个CONFIG文件,管理员可以通过网页重新生成该文件。但是,当此文件发生更改时,在应用程序回收之前不会获取新更改。

我的问题是,我希望能够在文件更改时自动回收应用程序池,这可能吗?或者他们是一个更好的方法?

也许问题应该是应用程序动态使用重写映射的另一种方法吗?

我在中型信托下运行的集成模式下使用IIS7。

由于 理查德

3 个答案:

答案 0 :(得分:1)

回收只是你的应用程序池的黑客方法是添加然后删除一个子文件夹。这将触发应用程序回收。

答案 1 :(得分:0)

如果您对以编程方式回收应用程序池Recycle App Pool感兴趣,请查看此内容,底部还有一个链接可通过脚本进行回收

答案 2 :(得分:0)

如果管理员网页可以访问应用程序目录,只需在写入外部rewrites.config文件后重新编写web.config或伪造对web.config的修改。由于web.config的更改,应用程序池回收将正常进行,这最终将导致重新读取外部配置。

这种方法有几个缺点:

  1. 在Web场方案中,您必须为服务器场中的每个节点重新编写web.config以获得一致的状态。
  2. 重新加载应用程序会强制重新编译网站,除非您在网络园林场景中运行,否则可能会导致503错误。
  3. 更好的方法可能是让管理员像今天一样通过网页正常重写文件,然后让他们运行像@Simon建议的脚本。管理员可能已经拥有提升的权限,并且应该能够执行调用 iisapp.vbs 的脚本来回收特定的应用程序池而不是完整的iisreset。

    希望有所帮助! ž