【问题标题】:How to handle On Exception in the base controller of asp.net core?如何在 asp.net core 的基本控制器中处理 On Exception?
【发布时间】:2020-06-15 22:19:17
【问题描述】:

enter image description here我是开发新手,我正在开发一个将 asp.net 应用程序转换为 asp.net 核心的项目。 但是我在 on exception 方法上面临一些挑战。 为此,我需要您的帮助和指导。 抛出异常错误,因为没有找到合适的方法覆盖。 下面是我的代码。

protected override void OnException(ExceptionContext filterContext)
        {
            var urlReferrerAbsolutePath = HttpContext.Request.GetDisplayUrl();

            var canvasName = urlReferrerAbsolutePath.Split('-').Last();
            canvasName = canvasName.Replace("%20", " ");

            ec_log log = new ec_log()
            {
                Date = DateTime.Now.ToUniversalTime(),
                ControllerName = filterContext.RouteData.Values["controller"].ToString(),
                ActionName = filterContext.RouteData.Values["action"].ToString(),
                Type = Share.MESSAGE_TYPE_ERROR,
                LogginOn = Share.MESSAGE_TYPE_EXCEPTION,
                LoggedInUserId = LoggedInId,
                LoggedInUserName = Share.LoggedInMembersFirstName,
                Exception = (filterContext.Exception.InnerException != null ?
                                 filterContext.Exception.InnerException.ToString()
                                 : "") + " " + filterContext.Exception.Message,
                System = _systemName,
                CompanyID = Share.LoggedInMembersCompanyID,
                Url = filterContext.HttpContext.Request.GetDisplayUrl(),
                CanvasName = canvasName,
                StackTrace = filterContext.Exception.StackTrace != null ? filterContext.Exception.StackTrace : ""
            };
            new LogModel(_configuration).InsertLog(log);
            if (filterContext.ExceptionHandled)
            {
                return;
            }
            filterContext.Result = new ViewResult
            {
                ViewName = "~/Views/Shared/Error.aspx"
            };
            filterContext.ExceptionHandled = true;
        }

enter image description here

【问题讨论】:

标签: c# asp.net-core


【解决方案1】:

非常感谢朋友们的指导。 希望该解决方案也对您有所帮助。

public virtual void OnException (Microsoft.AspNetCore.Mvc.Filters.ExceptionContext filtercontext);

【讨论】:

    【解决方案2】:

    你得到的错误是因为父类没有定义名为OnException(ExceptionContext filterContext)的方法

    您可以从文档中看到,从 MVC (.NET Framework) Controller (https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controller?view=aspnet-mvc-5.2) 更改该类包含该方法,但对于 .NET Core Controller (https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.controller?view=aspnetcore-3.1) 没有这样的方法已定义。

    为了在 .Net Core 中拥有类似的功能,请考虑将上面的 OnException 逻辑移动到 ExceptionFilter (https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-3.1#exception-filters)

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 2019-09-23
      • 2020-05-22
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多