2009-12-15 84 views
2

我需要从代码重新启动应用程序池,有没有人知道如何做到这一点? 我见过很多iis6的例子,大多数评论都是“它不工作”使用asp.net(IIS7)重新启动应用程序池

所以任何想法,或者无论如何,让IIS观看一个文件,当它改变了应用程序池重启?

+0

导致应用程序池重启的文件更改听起来不像一个非常强大的解决方案。你能详细说明你为什么这么做吗? – 2009-12-15 13:20:04

+0

我们正在这样做,因为我们正在使用url rewrite 1.1,并且每次更改url时我们都需要重新启动应用程序池,因为它在池启动时将它们存储在内存中。 这些网址是由管理系统在外部文件生成的webconfig中生成的。 – JamesStuddart 2009-12-15 15:13:38

回答

3

我想,使用application pool class就是要走的路。

善良,

+0

很酷的感谢,我已经下载了iis7 sdk但仍然没有图书馆?有任何想法吗? – JamesStuddart 2009-12-15 15:08:04

+0

我想我已经找到了DLL在这里:%WinDir%\ System32 \ InetSrv 会给这个去 – JamesStuddart 2009-12-15 15:14:44

+0

嗯,我得到访问被拒绝重新启动appPool,除非我使用管理员帐户作为appPool用户,但那不是一个好主意。 任何想法哪些组应该被允许去做? – JamesStuddart 2009-12-15 17:34:01

0

更简单的方法。为什么不是当你正在寻找改变文件,你要回收的应用程序只是更改Web.config的关键。到Web.config中的任何变化会导致你的应用程序,以回收..

1

实际上追加一个空格“”到最后的web.config将导致重新启动应用程序。

在Web应用程序文件夹(的Inetpub \ wwwroot的\ web应用程序)如果您运行的批处理文件,你会得到一个循环

0

比而创建

echo >> web.config 

一个bat文件(rest.bat)这样做(回收池)为什么不使用基于文件的缓存依赖?有一个使用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) 
+0

感谢这个例子,我们有litterally只是删除整个应用程序池重新启动代码,因为我们已经找到了一个更好的方式做我们正在做的事情(回到我在IIS6中的方式,我们只是缺少一个元素webconfig)。 :) – JamesStuddart 2010-05-12 09:02:49