0

我有一个 asp.net 应用程序,其中收到以下错误消息:-

Exception: System.Reflection.TargetInvocationException

Message: Exception has been thrown by the target of an invocation.

Stack Trace:
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance)
at System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments)
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)
at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
at System.Web.UI.WebControls.FormView.DataBind()
at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()
at System.Web.UI.WebControls.FormView.EnsureDataBound()
at System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls()
at System.Web.UI.Control.EnsureChildControls()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

为了调试错误,我已将 EnablePartialRendering 设置设置为 false,但这并没有帮助,并且错误以完全相同的方式显示。

我唯一的线索是,在调试的输出窗口中,我看到了这条消息:-'App_Code.iqmc5gba.dll 中发生了'System.InvalidCastException' 类型的第一次机会异常'

虽然这表明错误发生在 App_Code 文件夹中保存的代码中,但我实际上并不明智,因为有 211 个文件似乎对 dll 的内容有贡献,因为它们都被命名为 App_Code.iqmc5gba.nnn .cs 其中 nnn 是 0 到 210 之间的数字

在发生错误时,代码正在获取数据以在表单视图中显示记录。该错误仅发生在我目前可以看到的数据库中的一条记录上。

是否有人知道我可以使用任何技术来尝试识别在遇到 invalidcastexception 时正在执行的代码行?

4

2 回答 2

1

这通常发生在读取数据时(例如,使用数据读取器),并且当您实际期望它至少具有某个值时,某些列返回 null。考虑这段代码:

 int age = (int)reader["age"]; //will throw ClassCastException if null

如果由于某种原因结果集在age列上包含一个空值,则保存的值reader["age"]将不是整数,而是一个不同类型的DBNull.Value ;因此 ClassCastException。

如果您无权访问源代码,最好的办法是将好记录与坏记录进行比较,并确保两条记录上的对应列都有值。

于 2012-04-19T15:24:42.873 回答
0

我遇到了同样的问题。不确定您是否已解决问题,但 Icarus 在正确的路径上。我发现在某些情况下,您需要为要创建的帐户设置安全问题。我通过在 VS2012 的 Project 选项卡下打开 ASP.Net Config 解决了这个问题。单击提供程序选项卡并选择一个提供程序进行站点管理(在我的情况下为单个)。一旦它处于活动状态并且您测试连接,当您返回添加新用户时,将有一个输入安全问题和答案的选项。这似乎可以解决问题。

于 2012-11-19T05:52:57.063 回答