ASP.NET 站点崩溃 无法将 DBNull.Value 转换为类型"系统.Guid"



我有一个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);

最新更新