【发布时间】:2013-03-06 19:26:52
【问题描述】:
我有一个网站时常无法访问数据库。该网站仍然在 IIS 上运行,我可以毫无问题地访问首页。
我在开发或测试中没有遇到过这个错误,只有在现场。
我第一个记录的异常似乎总是一个 InvalidCastException,带有以下堆栈跟踪。
06-03-2013 09:06:26
The exception was: Specified cast is not valid.
at System.Data.SqlClient.SqlBuffer.get_Int32()
at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
at Read_Question(ObjectMaterializer`1 )
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
at System.Data.Linq.EntityRef`1.get_Entity()
at DB.TempQuestion.get_Question() in xxxx\DBLinq.designer.cs:line 9808
at xxxx.TestController.BuildBarHelperForPersonAssignment(PersonAssignment pa) in xxxx\TestController.cs:line 751
at xxxx.TestController.BuildMovieModel(TempMovie tm, PersonAssignment pa) in xxxx\TestController.cs:line 792
at xxxx.TestController.ShowMovie(TempMovie tm, PersonAssignment pa) in xxxxx\TestController.cs:line 636
at xxxx.TestController.Index(String id, FormCollection form, Nullable`1 currentid, String type, Int32[] selectedTest) in xxxx\TestController.cs:line 313
在此之后,我收到各种 InvalidCastExceptions 和“服务器无法恢复事务”错误。
很清楚错误发生在哪里。我的问题是为什么会发生这种情况以及为什么会导致应用程序无法访问数据库?
我认为错误出现在所有这些之前。
我的应用设置:
ASP.NET MVC2、LINQ2SQL、MsSQL Server 2008 R2、IIS 7.5 (ASP 2.0)
我的控制器设置:
我担心我需要重新设计我的控制器,它们几乎都是这样的。
[Authorize(Roles = "xxxxx")]
Public class ABController : Controller
{
private readonly DBLinqDataContext _db = new DBLinqDataContext();
public ActionResult Index()
{
...
}
}
会不会因为 DBLinqDataContext 的未关闭而发生此错误?
添加以下覆盖的方法可能有帮助吗?
protected override void Dispose(bool disposing)
{
_db.Dispose();
base.Dispose(disposing);
}
如果您需要更多信息,请告诉我!
【问题讨论】:
-
能否在您的索引操作中显示代码并标记引发异常的行?
-
我正在通过 EntitySet
标签: linq-to-sql asp.net-mvc-2 sql-server-2008-r2 iis-7.5 .net