views:

1085

answers:

8

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?

+2  A: 

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.

Carl
I am using the web site project model, not the web application project model in visual studio.
Michael Kniskern
I still believe the concept is the same, aside from the building to a dll file. ASP.NET still needs to compile your source files, and it's using it's cached version to run your site, not your "working" version that is uncompiled. http://www.odetocode.com/Articles/417.aspx
Carl
+5  A: 

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.

teedyay
I have to stop IIS in order to delete the temporary ASP.NET files, which resolves this error.
Michael Kniskern
Awesome. Glad it worked. (*cough* Can I get an up-vote? *cough*)
teedyay
A: 

Nice one, Thanks a lot.

A: 

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

Michael Kniskern
A: 

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. Eg. 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.

Balaji Birajdar
A: 

Balaji, I'm hoping you're right. We're getting an error whenever we try and push out user controls. Even though I'm not pushing out the control in question, I'm guessing the partial build causes this to screw up. Sure enough, on my LoadControl, I am NOT using the tilde in the path. I am referencing it like I normally would when calling from the root - just beginning with the /

I'll try to come back and update this as a possible answer once I see it works. Cross your fingers!

C Tifer
I updated the code and pushed it out. Didn't bomb out! So it's looking like your solution may be just the one we needed...
C Tifer
A: 

<compilation batch="false" debug="false"/>

add batch="false"

bbilginn