2009-02-04 7 views
5

Ich arbeite derzeit mit einem ASP.NET-Website-Projekt in Visual Studio 2008 und jedes Mal, wenn ich den Code hinter der Seite für einen Benutzer ändere Steuerung und wechseln Sie zu Seite, die den Benutzer contorl bekomme ich folgende Fehler verwendet:Objekt des Typs 'X' kann nicht in Typ 'X' umgewandelt werden - ASP.NET

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

ich habe meine gesamte Lösung neu zu erstellen, um zu bestellen, diesen Fehler zu beheben. Hat jemand anderen diesen Fehler erfahren und wissen sie, wie er es beheben kann?

Antwort

0

Wenn ich IIS auf meiner lokalen Arbeitsstation stopp und neu starte, kann ich dieses Problem beheben.

2

Das macht Sinn, von dem, was ich verstehe.

Sie ändern den Code-Behind. Damit diese Änderungen wirksam werden, müssen Sie dieses Projekt erstellen, damit der Code-Behind in die DLL-Datei für dieses Projekt kompiliert werden kann. Wenn Sie das Code-Behind ändern und wenn das Projekt nicht erstellen, haben Sie im Wesentlichen zwei Versionen dieser Seite und ASP.Net kann die zwei Versionen nicht auflösen. Wenn Sie also die Klasse kompilieren, werden die Änderungen in der DLL abgeglichen.

+0

ich das Website-Projekt Modell verwenden, nicht das Web-Anwendung Projektmodell in Visual Studio. –

+0

Ich glaube immer noch, das Konzept ist das gleiche, abgesehen von der Erstellung einer DLL-Datei. ASP.NET muss noch Ihre Quelldateien kompilieren, und es verwendet seine zwischengespeicherte Version, um Ihre Site auszuführen, nicht Ihre "funktionierende" Version, die nicht kompiliert wurde. http://www.odetocode.com/Articles/417.aspx – Carl

8

Löschen Ihrer temporären ASP.NET-Dateien (alles in C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ temporäre ASP.NET-Dateien) macht dies weg ... für eine Weile.

+0

Ich muss IIS beenden, um die temporären ASP.NET-Dateien zu löschen, die diesen Fehler behebt. –

+2

Ehrfürchtig. Froh, dass es funktioniert hat. (* hust * Kann ich eine Abstimmung bekommen? * hust *) – teedyay

-1

Eurekaaa !! Got it it ... Dieses funktioniert ...

Wenn Sie die Benutzersteuerung löschen oder über die Methode LoadControl laden, verwenden Sie eine 'Tilde' in ihrem Pfad. Z.B. this.LoadControl("~/MyUserControl.ascx");

Das gleiche gilt für ein Steuerelement auf einer Seite gelöscht. Fügen Sie die Tilde dem deklarativen Pfad des Benutzersteuerelements in der aspx-Seite hinzu.

Wir können dies als einen Fehler in VS2005 nennen und ist in VS fixierte mich 2008

Reply wenn diese dosen't Arbeit oder mehr Erklärung braucht. Alternativ, vergessen Sie nicht, dies als Antwort zu markieren.