我有一個網站,不時訪問數據庫。該網站仍然在IIS上運行,我可以毫無問題地打到首頁。LINQ2SQL InvalidCastException
我還沒有遇到這個錯誤在開發或測試,只在現場。
我第一次記錄的異常,似乎總是一個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服務器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);
}
讓我知道你是否需要更多信息!
你能告訴你的索引操作和標誌線代碼,其中拋出異常? – 2013-03-06 19:29:59
即時通訊運行通過一個EntitySet
PaludaN
2013-03-07 08:10:09