我有一个ASP。. NET应用程序正在崩溃,我无法在本地重现此问题。当我使用DebugDiag打开崩溃转储文件时,我看到了以下异常的许多实例。
不能强制转换DBNull。值设置为"System.Guid"类型。请使用可空值类型。System.Data.DataRowExtensions + UnboxT ' 1 [[System.Guid,mscorlib]] .ValueField (System.Object)
System.Data.DataRowExtensions.Field [[System.Guid,(System.Data mscorlib]]。system . string)我们应该,
Extension.FieldSub[[系统。Guid, mscorlib]] (System.Data.DataRowSystem.String)
下面是来自堆栈跟踪的应用程序代码。我想知道是否有可能是LINQ后台线程导致崩溃。如果是LINQ后台线程,DB和web应用程序如何处理这个问题?它似乎还会继续运行一段时间,但随着这些异常的堆积,它最终会崩溃。
public static T FieldSub<T>(this DataRow row, string columnName)
{
object result = null;
try
{
result = row.Field<T>(columnName);
}
catch {}
if (result == null)
{
result = default(T);
}
return (T)result;
}
您需要验证数据是否为空,请尝试以下操作:
result = row.IsNull(columnName) ? default(T) : row.Field<T>(columnName);