一个【在客户端重启站点后台】的简单方法

        有着连续后台的ASP.net站点,有时候需要让用户自助地重启整个站点程序(例如后台出现异常或者需要重新初始化时)。用户只需点击页面上一个按钮,站点应用将自行回收并重启(Application_Start也将被执行)。

        实现这一功能至少有两种方法。一是使用DirectoryEntry通过虚拟路径定位并操作应用程序池,但是这种方法对IIS版本有一些要求,并且应用程序池一旦回收,后台也就停止,直到站点收到下一次页面请求时才回执行Application_Start(Application_Start被执行是站点后台启动的必要条件)。于是有了第二种方法,通过系统服务,先回收站点,然后再模拟访问站点某一页面使后台启动。

        如何更简单地实现这一功能?既不安装守卫服务,还适用于任意版本的IIS?我在对IIS自动回收机制的了解中,得知当站点某些重要文件发生更改时,应用程序将自动回收,于是准备从这个方面入手。经过一些尝试,顺利实现了后台的重启。

 代码如下:

 public static void RestartSystem()
{
    try
    {
        String Path = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;//获取当前站点Config文件路径
        Byte[] Buffer = File.ReadAllBytes(Path);//读取Config文件
        File.WriteAllBytes(Path, Buffer);//原样写回
        //此时,站点应用程序被收回,后台当然也就停止了
    }
    catch { }  

    HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString());//客户端重新加载本页
    //此时,Application_Start被执行,后台启动
}

然后在页面控件的postback事件响应函数中直接调用RestartSystem函数即可。

当然这只是个雕虫小技,但是它确实达到了我的功能要求。仅供大家参考。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值