Michael Kniskern
Michael Kniskern

Reputation: 25270

Unable to cast object of type 'X' to type 'X' - ASP.NET

I am currently working with a ASP.NET Web site project in Visual Studio 2008 and everytime I make a change to code behind page for a user control and browse to page that is using the user contorl I get the following error:

Unable to cast object of type 'ASP.basepage_master' to type 'ASP.basepage_master'.

I have to rebuild my entire solution to order to resolve this error. Has anyone else experienced this error and do they know how to resolve it?

Upvotes: 5

Views: 11225

Answers (6)

user153923
user153923

Reputation:

I had this same issue, and I was finally able to get the site to build.

I had to create another Master Page for the ASP.NET project with a different name, copy and paste the content of the original into the new one, make all of my Child forms inherit from the new Master Page, and delete the old Master Page.

The website will run now. I don't know how the debugger got confused and started using a cached object that didn't exist. I tried everything to get it to release that cache (deleting the temp files under C:\%USER%\AppData\Local and under C:\Windows\Microsoft.NET, renaming the Master Page, renaming the Master class, making changes to the files to force them to reload, rebuilding the solution, add the web.config option <compilation batch="false" debug="false"/>) except deleting the Master Page.

Deleting the Master Page fixed it for me, but I don't understand why I had to do that.

Here is the thread where my struggles played out:

https://forums.asp.net/t/2172428.aspx

Upvotes: 0

Balaji Birajdar
Balaji Birajdar

Reputation: 11

Eurekaaa!! Got it... This one works...

When you grag drop the usercontrol or load it via the LoadControl method use a 'tilde' in its path. E.g. this.LoadControl("~/MyUserControl.ascx");

The same applied for a control dropped on a page. Add the tilde to the declarative path of the user control in the aspx page.

We can call this as a bug in VS2005 and is fixed in VS 2008.

Reply me if this dosen't work or needs more explanation. Alternatively, don't forget to mark this as answer.

Upvotes: 0

Michael Kniskern
Michael Kniskern

Reputation: 25270

If I stop and restarted IIS on my local workstation, I am able to resolve this issue.

Upvotes: 1

teedyay
teedyay

Reputation: 23521

Deleting your temporary ASP.NET files (everything in C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files) makes this go away... for a while.

Upvotes: 8

Carl
Carl

Reputation: 1726

That makes sense, from what I understand.

You're making a change to the code-behind. In order for those changes to take effect, you'd need to build that project so that the code-behind can be compiled into the DLL file for that project. When you change the code-behind, and don't build the project, you've essentially got two versions of that page, and ASP.Net can't resolve the two versions. So, when you compile the class, the changes are reconciled into the DLL.

Upvotes: 2

Related Questions