我有一个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,但这没有用,并且错误以完全相同的方式显示。
我唯一的线索是在Debug的Output窗口中我看到了这样的消息: - '在App_Code.iqmc5gba.dll中发生'System.InvalidCastException'类型的第一次机会异常'
虽然这表明错误发生在App_Code文件夹中保存的代码中,但我实际上并不聪明,因为有211个文件似乎对dll的内容有贡献,因为它们都被命名为App_Code。 iqmc5gba.nnn.cs其中nnn是0到210之间的数字
在发生错误时,代码将获取数据以在窗体视图中显示记录。 该错误仅发生在我目前可以看到的数据库中的一条记录上。
是否有人知道我可以用来尝试识别遇到invalidcastexception时正在执行的代码行的任何技术?
答案 0 :(得分:1)
这通常在读取数据时(例如,使用datareader),并且当您实际期望它至少具有某个值时,某些列返回null。请考虑以下代码:
int age = (int)reader["age"]; //will throw ClassCastException if null
如果由于某种原因,结果集在age
列中包含空值,则reader["age"]
保留的值将不是整数,而是DBNull.Value,这是一个不同的类型;因此ClassCastException。
如果您无法访问源代码,最好的办法是将好记录与坏记录进行比较,并确保两个记录上的相应列都有值。
答案 1 :(得分:0)
我遇到了同样的问题。不确定你是否已经修复了你的问题,但伊卡洛斯是在正确的道路上。我发现在某些情况下,您需要为要创建的帐户设置安全问题。我在VS2012的Project选项卡下打开ASP.Net Config解决了这个问题。单击“提供程序”选项卡并选择“站点管理提供程序”(在我的示例中为“单个”)。一旦激活并测试连接,当您返回添加新用户时,将有一个输入安全问题和答案的选项。这似乎解决了这个问题。