asp.net – 如何以编程方式回收.net Web应用程序自己的apppool?

我有一个使用Nhibernate和 Linq2sql的复杂服务器应用程序.每天大约3次Linq2sql代码生成“值不能为空”的异常.一旦发生这种情况,代码将始终生成异常.诊断和解决根本原因将是漫长的并且将引入不稳定性.

当前的“修复”是每小时重新调整应用程序池.但是,从问题发生到服务循环发生之前,服务已经停止.我希望Web服务捕获异常并回收它自己的应用程序池.我希望所有其他Web请求在完成之前得到尊重.

编辑:故障位于负载平衡Web场上的两个服务器上.客户端不会因为此代码崩溃而从一台服务器切换到另一台服务器.

解决方法

以下代码将回收当前站点的应用程序池.您需要添加对Microsoft.Web.Administration的引用
using (ServerManager iisManager = new ServerManager())
{
    sitecollection sites = iisManager.Sites;
    foreach (Site site in sites)
    {
       if (site.Name == HostingEnvironment.ApplicationHost.GetSiteName()) 
       {
         iisManager.ApplicationPools[site.Applications["/"].ApplicationPoolName].Recycle();
         break;
       }
    }
}

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....