【发布时间】:2015-05-08 21:38:51
【问题描述】:
我们有一个 asp.net Web 应用程序,对于我们的一位用户,当他们单击按钮时,会在特定页面上引发异常。我无法重新创建此问题,但是当客户端收到异常时系统正在记录异常。问题是,我不知道异常是在哪里产生的。当我们记录异常时,我们在异常上调用 ToString() 方法来获取堆栈跟踪。这是一个解析错误,但我不知道它来自哪里。这是我们记录的异常:
System.FormatException:输入字符串的格式不正确。
在 System.Number.StringToNumber(字符串 str,NumberStyles 选项, NumberBuffer& 数字, NumberFormatInfo 信息, Boolean parseDecimal)
在 System.Number.ParseInt32(String s, NumberStyles 样式, NumberFormatInfo 信息)在 System.ComponentModel.Int32Converter.FromString(字符串值, NumberFormatInfo 格式信息)在 System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext 上下文、CultureInfo 文化、对象值)
我假设这是由 Global.asax 中的以下代码记录的
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (Server.GetLastError() != null)
{
Exception objErr = Server.GetLastError().GetBaseException();
objErr.WriteExceptionLog();
}
}
但是,我不知道从哪里调用此代码或如何查找。关于我可以在哪里查看或在记录异常时是否需要做一些不同的事情有什么想法吗?
【问题讨论】:
-
您也可以尝试记录内部异常。您也不知道它是在某个地方将字符串转换为数字。我不知道你这样做的频率如何,但你总是可以在你的项目中搜索你进行转换的地方,然后改用 tryparse 之类的东西。
-
如果您改为登录
Server.GetLastError()会发生什么?并确保您正在记录Server.GetLastError().ToString()。