登录 asp.net core Razor 页面时出错

问题描述

我正在构建一个 asp.net 核心剃刀页面应用程序。当任何服务器端运行时错误发生时——来自整页 GET 或 POST,或来自部分页面(也就是使用“获取”)GET 或 POST——我想返回一个用户可以提供给我们帮助台的 Guid .

服务器端我将使用该 guid 记录错误。因此流程是:

  1. 用户收到运行时错误并看到带有 Guid 的友好消息。
  2. 用户致电服务台并向他们提供 Guid。
  3. 帮助台使用 Guid 在错误日志中查找详细消息。

在Startup Configure方法中,认的错误处理方式是这样的:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseExceptionHandler("/Error");
}

如果我从不使用 javascript“获取”从服务器获取分页面,这会很好。我可以简单地在 Error.cshtml 页面后面的代码添加我的错误处理逻辑。但是当我不处理 javascript 获取错误时,我只想重定向到“Error.cshtml”。当我处理 javascript 提取错误时,我想发回我将向用户显示的文本位,以代替失败的部分页面更新。

我的问题是,我应该在哪里以及如何编写以上述方式处理所有错误的服务器端代码?我怀疑最简单的方法是将 lamda 传递给 app.UseExceptionHandler,如下所示,但是一旦我进入那里,我就迷失了如何继续,即:

    app.UseExceptionHandler(appBuilder =>
            {
                appBuilder.Run(async context =>
                {
                    //what do I do Now?
                });
            });

我的两个大问题是:

  1. 在 lamda 错误处理程序中,如何区分 javascript“获取”请求与常规的整页 GET 或 POST 请求?
  2. 在这个 lamda 错误处理程序中,如果我确定错误不是来自 javascript“获取”请求,我可以将请求重定向错误处理页面吗?

解决方法

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

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

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