【问题标题】:Convert base Exception into HttpException将基本异常转换为 HttpException
【发布时间】:2018-01-18 19:07:28
【问题描述】:

我正在开发 ASP.Net 应用程序,目前正在努力处理异常。我已经设法进行了适当的异常处理,但我真的不知道如何处理不适合 UI 的内部错误。

void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
    LogManager.GetCurrentClassLogger().Error(ex);
    Response.Clear();

    HttpException httpEx = ex as HttpException;
    if (httpEx == null)
    {
        switch(ex.GetType())
        {
            //Convert ex into httpexception 
            //with statuscode that depends on the exception type
        }
    }

    RouteData routeData = new RouteData();
    routeData.Values.Add("controller", "Error");
    routeData.Values.Add("action", "Handler");
    routeData.Values.Add("exception", httpEx);
    Server.ClearError();
    Response.TrySkipIisCustomErrors = true;

    var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
    var c = ControllerBuilder.Current.GetControllerFactory().CreateController(rc, "Error");
    c.Execute(rc);
}

【问题讨论】:

  • 为什么要将异常转换为HttpException
  • 只需创建一个 HttpException 实例,包装原始异常并传递所需的 httpCode 和消息。
  • @larsbe,因为我想将它传递给管理异常的视图,我需要状态码。

标签: c# asp.net exception


【解决方案1】:

与其尝试将您的异常转换为HttpException,不如尝试创建一个新的HttpException,并将原始异常作为内部异常:

HttpException httpEx = new HttpException(500, msg, ex);

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2017-02-01
    • 2016-08-20
    • 2014-04-11
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2023-02-24
    相关资源
    最近更新 更多