提问人:Michael Wood 提问时间:7/20/2023 更新时间:7/21/2023 访问量:28
有没有办法将整个异常对象传递到 c# Web 表单中的错误处理页面
Is there a way to pass the entire exception object to an error handling page in a c# webform
问:
似乎我应该能够将整个异常对象传递到另一个页面。在本例中,我正在创建一个自定义错误处理页面。我到处寻找,但我没有找到我需要的东西。我真的很希望能够在我的 Oops 页面上剖析错误,在那里我可以记录错误并向我的用户显示友好消息,以便他们可以打印屏幕并将其带给应用程序开发团队。举个例子,我想仔细阅读跟踪的框架
var stackTrace = new StackTrace(ex, true);
var allframes = stackTrace.GetFrames().ToList();
foreach(var frame in allframes)
{
var filename = frame.GetFileName();
var linenumber = frame.GetFileLineNumber();
var method = frame.GetMethod();
var MethodName = method.Name;
var Classname = frame.GetMethod().DeclaringType.ToString();
}
所以我尝试了显而易见的方法。
用HttpContext.Current.Response.Redirect(String.Format("~/Oops.aspx/Error=?{0}",ex));
这将生成换行符错误。
使用 HttpUtility.UrlEncode 无法将对象转换为字符串
在我看来,转换为字符串会丢失一堆数据。
到目前为止,我已经简化为字符串数据的速记传递,与我可以获得整个异常对象所能得到的数据相比,这是残缺的。
HttpContext.Current.Response.Redirect(string.Format("~/Oops.aspx?Error={0}&StackTrace={1}&InnerException={2}&Data={3}&Source={4}&TargetSite={5}&Hresult={6}", ex.Message, ex.StackTrace, ex.InnerException, ex.Data, ex.Source, ex.TargetSite, ex.HResult));
那么事实就是如此吗?还是我错过了什么?似乎我应该能够将整个对象传递到另一个页面,但话又说回来......
提前感谢您的任何帮助!
答:
0赞
Michael Wood
7/21/2023
#1
感谢大家查看和审查我的问题,并为我的查询提供见解。
我选择了一条不同的路线,
我现在没有抓住异常并定向到 Oops 页面,而是定向到 ExceptionUtility.LogException 方法来记录和提取我想要的所有详细信息,然后直接转到 Oops 页面以显示友好的错误消息。
谢谢大家!
评论