2013-03-06 68 views
0

我有一個網站,不時訪問數據庫。該網站仍然在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); 
    } 

讓我知道你是否需要更多信息!

+0

你能告訴你的索引操作和標誌線代碼,其中拋出異常? – 2013-03-06 19:29:59

+0

即時通訊運行通過一個EntitySet PaludaN 2013-03-07 08:10:09

回答

0

解決它......

它是由於多個未配置的DataContext的

0

看起來您已將TempQuestion的屬性類型之一從int更改爲某些內容,並且忘記更改相應的表格列的類型。

+0

是的,這就是它看起來像 - 但那不是它。 我驗證了我的LINQ生成的東西,在最後的版本中沒有任何更改。 「 」看起來內存中的元數據不再正確表示,因爲之後我看到很多InvalidCastExceptions。我猜這是由於系統試圖將字符串反序列化爲int字段,因爲元數據偏移不正確。 我想我的問題有點類似於http://stackoverflow.com/questions/1388599/periodic-invalidcastexception-and-the-server-failed-to-resume-the-transaction – PaludaN 2013-03-07 08:02:26