C# 处理aspnet core 2.2 razor页面时出错

C# 处理aspnet core 2.2 razor页面时出错,c#,razor,error-handling,middleware,razor-pages,C#,Razor,Error Handling,Middleware,Razor Pages,我有一个非常简单的异常,由VS2017为razor pages.net core生成的默认错误页面处理。 错误页面显示异常错误-是否有任何方法可以显示自定义错误,例如命令中的错误重试 try { var interenet = "nc -w 5 -z 8.8.8.8 53 >/dev/null 2>&1 && echo 'ok' || echo 'error'".Bash(); } cat

我有一个非常简单的异常,由VS2017为razor pages.net core生成的默认错误页面处理。 错误页面显示异常错误-是否有任何方法可以显示自定义错误,例如命令中的错误重试

     try
      {

      var interenet = "nc -w 5 -z 8.8.8.8 53  >/dev/null 2>&1 && echo 'ok' || echo 'error'".Bash();

        }
        catch (Exception ex2)
           {
               _logger.LogError(
                            0, ex2,
                            "An exception was thrown attempting " +
                            "to execute the error handler.");

                    throw new Exception(ex2.Message);
   }
错误页面模型

public class ErrorModel : PageModel
    {
        public string RequestId { get; set; }

        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);

        public void OnGet()
        {
            RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
        }
    }
我添加的启动类

   app.UseExceptionHandler("/Error");
ExceptionHandlerMiddleware设计用于拦截未处理的异常。您正在处理您的异常,但随后抛出另一个异常,创建一个新的未处理异常,从而强制中间件显示配置的错误页面。我将向发生错误的页面添加公共字符串属性,并将其设置为catch块中所需的任何错误消息,从而处理异常,而不调用自定义错误页面:

public class YourPageModel : PageModel
{
    public string ErrorMessage { get; set; }

    public void OnGet() // or OnPost, whichever
    {
        try
        {
            var internet = "nc -w 5 -z 8.8.8.8 53  >/dev/null 2>&1 && echo 'ok' || echo 'error'".Bash();
        }
        catch (Exception ex2)
        {
            _logger.LogError(0, ex2, "An exception was thrown attempting " +
                            "to execute the error handler.");
            ErrorMessage = "Error in command try again";
        }
    }
}

将@Model.ErrorMessage

添加到属于引发此异常的PageModel的内容页的某个位置。

非常有用-是否有方法实现此功能,以便我不必到处尝试/捕获?