除了修改web.config之外,如何重启asp.net应用程序

Mik*_*keJ 25 c# asp.net restart

除了从应用程序内部触摸web.config之外,是否有推荐的方法来反弹asp.net应用程序?是HttpRuntime.UnloadAppDomain(); 这样做的首选方式是什么?如果是这样,你在哪里这样做?在卸载页面或应用程序中的其他位置?

cas*_*One 24

从应用程序内部触摸web.config是一个坏主意,IMO.另外,拥有一个你修改过的文件的想法是有点hackney,IMO.

该文档明确指出UnloadAppDomain将关闭应用程序:

UnloadAppDomain允许以编程方式关闭未使用的应用程序.

您应该能够在应用程序的任何位置进行此调用.请注意,您可能会得到一个SecurityException,因此请确保运行时为您提供适当的权限(您可能希望将其放入库中并进行调用,然后在GAC中设置库,并提供证据以使其完全信任) .

  • 是.这就是我问的原因.web.config修改看起来很难看,可能会让我们在thedailyWTF.com上写下来:) (2认同)
  • 我认为更好的引用方式是:"终止当前的应用程序.应用程序在下次收到请求时重新启动." 该引用中的"未使用"部分可以被解读为"只有在没有人使用它时才会关闭",但实际情况并非如此. (2认同)
  • 使用System.Web.HttpRuntime.UnloadAppDomain() (2认同)

Ste*_*ton 12

如果这是.NET 2.0或更高版本,则可以添加"App_offline.htm"文件,向服务器发出请求,将其删除,然后向服务器发出另一个请求.

只要app_offline.htm文件存在于文件夹中,此事件序列将强制ASP.NET卸载应用程序.

Scott Guthrie的博客文章:http: //weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx

  • @MikeJ - 另请注意,这不是程序化更改.您需要物理添加和删除文件才能使其正常工作 (3认同)

Fre*_*red 10

这段代码对我有用.只是调用它来重新加载应用程序.

System.Web.HttpRuntime.UnloadAppDomain();
Run Code Online (Sandbox Code Playgroud)

阅读更多

这个方法只会卸载我们的应用程序.如果您只是将此方法放在ASP.NET Web按钮中,那么您就完成了.那么我们的申请什么时候重新加载?实际上,如果您单击按钮,它将首先启动我们的方法并卸载应用程序.此时我们正在进行的网页上也会重新加载,因为我们只需点击一个按钮就可以刷新网页.启动我们的方法后,页面刷新过程也会导致我们的应用程序重新加载.


Joh*_*han 7

您也可以停止并启动与应用程序关联的应用程序池.

  • 这将使用相同的AppPool回收每个应用程序. (3认同)

Din*_*ruz 5

您可以通过调用HttpRuntime.ShutdownAppDomain方法来完成此操作(您需要使用反射来调用它,因为它是私有静态方法)

有关如何在“重新启动”REST API 中使用此方法的示例,请参阅如何以编程方式重新启动 IIS 工作进程(即关闭当前 ASP.NET 域)