c# - ASP.NET MVC:如何防止导致 IIS 应用程序池关闭的异常
问题描述
我有一个应用程序,当连接数据库失败时会抛出异常。似乎此异常导致应用程序池在多次失败后关闭。
如何捕获此异常以不关闭应用程序池?下面是出现异常时执行的代码
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
private static readonly SecureLogger log = new SecureLogger(LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType));
public override void OnException(ExceptionContext filterContext)
{
if (!filterContext.HttpContext.IsCustomErrorEnabled)
{
return;
}
if (!ExceptionType.IsInstanceOfType(filterContext.Exception))
{
return;
}
log.Error("Internal server error occurred while handling web request.", filterContext.Exception);
var controllerName = (string)filterContext.RouteData.Values["controller"];
var actionName = (string)filterContext.RouteData.Values["action"];
var model = new HandleErrorInfo(new Exception("Internal server error occurred while handling web request."), "Error", "Index");
filterContext.Result = new ViewResult
{
ViewName = View,
ViewData = new ViewDataDictionary<HandleErrorInfo>(model)
};
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
}
}
导致异常的代码
public List<DataModel> GetStudentData(List<string> idList)
{
try
{
using (MyDBContext dbcontext = new MyDBContext())
{
return dbcontext.studentData.Where(x => idList.Contains(x.userId)).Select(
x => new DataModel
{
StudentId = x.userId,
StudentName = x.Name
}
)
?.ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
解决方案
推荐阅读
- c# - 如何在 C# 中使用 Selenium 在表格中定位文本并引用元素单击另一个元素?
- python - 是否有任何 python 包可以很好地从 RTL 语言的 PDF 中提取文本?
- wordpress - 来自 Wordpress API 的基于 Json 数据的快速路由
- ios - Coreplot iOS - Color space between graph bars
- clojurescript - A Rum's component rendering in the REPL fails by TypeError
- apache-kafka - Error while executing shell-script using oozie
- laravel - how to collect only emails from related table
- javascript - ChartJS 为每个 JSON 对象分隔图表,而不是在悬停时
- hadoop - 提高 HDFS 中名称和数据节点的效率
- python - 示例 python 脚本或 curl 以将 ION 文件 (xml) 作为 MWS 提要提交