如何在httpcontext中取消ajax的请求并定向到.NET Core中的另一个页面

问题描述

.NET Core是我的新手,正在创建一个全局异常处理程序。我们在应用程序中创建一个全局异常处理程序。所有的CREATE,Update和Delete操作都是从Ajax完成的,并且读取操作的完成与正常的browser加载一样。因此,所有这些操作都作为部分视图返回。还有一些报告和某些事情是通过ajax实现的,但它以JSON的形式返回。

因此,我想在出现异常时返回到公共页面。我尝试使用中间件,但是它不起作用。它不是WebAPI的应用程序。

在应用程序中,如果出现任何异常,它将进入此中间件,但我无法使用ajax调用重定向到公共页面。但我可以在浏览器加载期间实现。

我需要的是

无论哪种类型的请求,我都希望我的应用程序定向到公共页面,无论请求如何,都应将其取消(ajax或loading),并将其重定向到异常页面。 我如何在.net核心中实现。有人可以帮忙吗

以下代码,供我参考

   public ExceptionMiddleware(RequestDelegate next)
        {
            _next = next;
        }
    
        public async Task InvokeAsync(HttpContext httpContext)
        {
            try
            {
                await _next(httpContext);
            }
            catch (Exception ex)
            {
              await HandleExceptionAsync(httpContext,ex,ExceptionID);
            }
        }
    
        private Task HandleExceptionAsync(HttpContext context,Exception exception,string ExceptionID)
        {
            context.Response.ContentType = "application/json";
            context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            
            context.Response.Redirect($"/GlobalErrorHandler/Error?ReturnType={context.Request.Path.Value.GetUrl()}&&StatusCode={context.Response.StatusCode}&&ExceptionID={ExceptionID}");
    
            return context.Response.WriteAsync(new Errorviewmodel()
            {
                Path= context.Request.Path.Value.GetUrl(),StatusCode = context.Response.StatusCode,Message = "Internal Server Error from the custom middleware."
            }.ToString());
        }

以上实现是一个单独的类,我使用IApplicationBuilder的扩展方法创建了一个单独的静态类,并按如下所示注册了该启动程序

像下面的扩展方法一样注册

  applicationBuilder.UseMiddleware<ExceptionMiddleware>();

注册启动类

   app.CustomExceptionhandler()

任何人都可以帮忙吗

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)