【问题标题】:Asp.Net Random ErrorAsp.Net 随机误差
【发布时间】:2010-03-17 15:53:57
【问题描述】:

在过去两周内随机出现两次,we 应用程序将开始出错并且无法工作,直到我在 IIS 中回收应用程序池。

具体的错误和stacktrace是:

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'System.String'.
   at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
   at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
   at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
   at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
   at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
   at DigitalScout.WEDS.Business.Slug.GetTeamPath(String teamID)
   at DigitalScout.WEDS.WebApp.Code.Navigator.TeamNavigator.Home(String teamID)
   at ASP.management_default_aspx.__DataBind__control7(Object sender, EventArgs e)
   at System.Web.UI.Control.OnDataBinding(EventArgs e)
   at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
   at System.Web.UI.Control.DataBindChildren()
   at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
   at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource)
   at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)
   at System.Web.UI.Control.DataBindChildren()
   at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
   at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource)
   at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)
   at DigitalScout.WEDS.WebApp.Management._default.Page_Load(Object sender, EventArgs e)
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at DigitalScout.WEDS.WebApp.Code.BaseClass.Pages.ManagementPage.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   --- End of inner exception stack trace ---
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.management_default_aspx.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

在回收应用程序池之前,系统的每个用户都会发生此错误。对此的任何帮助都会有所帮助,因为我们无法重现该错误。

【问题讨论】:

  • @Mitch Wheat,是的,这是实际抛出的错误,但它是从 Linq2Sql 使用的 SqlClient 代码内部抛出的,而不是我们编写的代码。此外,此代码大部分时间都有效 - 直到此错误经常出现,因此需要回收应用程序池。
  • 对不起,我应该意识到这一点。
  • @Mitch Wheat,我会调查你的答案,谢谢你的帮助:)

标签: asp.net sql-server-2005 linq-to-sql datacontext


【解决方案1】:

【讨论】:

  • 我们的datacontext实现了IDisposable接口,这还不足以让对象在超出范围时被处理掉吗? Dispose 方法会在连接打开时关闭连接并调用基本 Dispose 方法。
  • 你应该显式调用 Dispose。
  • 谢谢,这正是我所害怕的。
  • 或者更好地使用“使用”块。
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2016-01-24
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多