Unable to cast object of type ‘System.Collections.Generic.List`1[EditQuoteController+UnsavedQuoteItemInfo]’ to type ‘System.Collections.Generic.List`1[EditQuoteController+UnsavedQuoteItemInfo]’.
Yes, you read that right. Unable to cast object of type X to type X.
I have seen this type of error once before and it was when there were multiple assemblies referencing different version of a common assembly, so even though their names were the same, their versions were different.
But in this instance there is nothing like this that could be having an impact. All of the classes of consequence are in the same assembly.
Also, I don’t get exception very often, only every now and then.
I think maybe this is happening between builds on my development machine b/c I am storing some data in the session. So the version in session was from the last build? Doesn’t sound like a great explanation, but it’s the best I have at this point.
I am pretty sure that what I wrote in the last update is what is actually happening.
I used this code:
Try list = CType(view.Session.Item(Me.UnsavedKey), List(Of UnsavedQuoteItemInfo)) Catch ex As System.InvalidCastException Dim sError As String = "Unable to cast from type " & _ view.Session.Item(Me.UnsavedKey).GetType.AssemblyQualifiedName & _ " to type " & GetType(List(Of UnsavedQuoteItemInfo)).AssemblyQualifiedName & _ ". The session has been cleared." view.Session.Item(Me.UnsavedKey) = Nothing Throw New System.ApplicationException(sError) End Try
Which producted the following 2 types:
System.Collections.Generic.List`1[[EditQuoteController+UnsavedQuoteItemInfo, App_Web_bp-bbqew, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=22.214.171.124, Culture=neutral PublicKeyToken=b77a5c561934e089 System.Collections.Generic.List`1[[EditQuoteController+UnsavedQuoteItemInfo, App_Web_ve7ziow-, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=126.96.36.199, Culture=neutral, PublicKeyToken=b77a5c561934e089.
I am guessing this is a by product of using the web site project, instead of web application project. There are some other reasons why we wanted to use web site instead of web app on this project, so you don’t have to scold me: we made the right choice.
But it seems that every time I make a change to the project, it creates a new dynamically named assembly. So even though the classes are really the same, they are globally different as far as asp.net is concerned.