Debug de site ASP.net 2.0 sous Visual Studio 2005 [Résolu]

Signaler
Messages postés
9
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
22 mai 2007
-
julienh974
Messages postés
9
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
22 mai 2007
-
Bonjour à tous,

Je suis actuellement confronté à un problème sous Visual Studio 2005 : je développe de gros sites internet en ASP.net 2.0 et j'utilise les crosspage postback pour transférer certaines valeurs. De manière à récupérer les valeurs dont j'ai besoin, j'effectue des transtypages de this.PreviousPage directement depuis le code behind et je n'utilise donc pas la directive de page <%@ PreviousPageType ... %> car à cause de la complexité du site, des pages différentes peuvent servir de PreviousPage à chacune de mes pages. Mon problème actuel est que lorsque j'essai de lancer le debug du site (F5 ou en cliquant sur le bouton de debug), la compilation échoue parfois mais insistant, je fini par réussir à lancer le debug sans apporter aucune modification à mon code.

Cependant, depuis quelques jours, il me faut parfois plus de temps pour lancer un debug que pour développer ou corriger le site en lui même ce qui est assez génant ... Les erreurs générées sont toutes du type "Le type ou le nom d'espace de noms '(...)' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)" ...

J'ai essayé plusieurs astuces que j'ai pu trouver sur le net comme supprimer le contenu de "Temporary ASP.NET Files" ou de modifier le web.config avec certaines valeurs et rien n'y fait ... Je n'avance plus et je n'arrive pas à lancer le debug depuis près de 3h ... 

Juste pour information, la publication se fait quant à elle sans aucun problème mais j'ai besoin de déboguer le site en local avant de le publier ...

Je vous remercie par avance pour toute l'aide que vous pourrez m'apporter,

4 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
il ne faut pas faire comme ca !

c'est normal que ca compile de temps en temps et pas d'autres, la compilation des pages ASP.net est un sujet complexe et le temps me manque pour te l'expliquer, mais n'utilise jamais les types de tes pages c'est dangereux.

La solution est de faire une interface qui a une propriété IDDossierConsultation

public interface ITotoPage
{
    int IDDossierConsultation {get; }
}

et ensuite dans chacune de tes pages "parente" tu implémentes cette interface et dans la page receveuse tu cast en cette interface t'auras pas d'erreur de compil car le type existe (contrairement au type des pages qui sont créer lors de la premiere execution si tu fais pas un publish website)

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Bonjour,

peux tu nous indiquer la ligne qui plante ?

Si ta page previouspage peut etre plusieurs pages différentes je te conseil de pas la caster mais d'utiliser ((TextBox)Page.PreviousPage.FindControl("tbToto")).Text ce sera beaucoup plus propre et simple

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
9
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
22 mai 2007

Tout d'abord, merci pour ta réponse.
Voici la partie de mon code qui provoque "aléatoirement" une erreur de compilation :

(...)
                 if (this.PreviousPage is admin_accueil)
                {
                    // Création d'un dossier de consultation
                    admin_accueil maPagePrecedente = this.PreviousPage as admin_accueil;                   
                    this._monDossierConsultation = new DossierConsultation();
                    this._monDossierConsultation.Client = maPagePrecedente.IdClient;
                    (...)
                }
                else if (this.PreviousPage is admin_ascenceur)
                {
                    // Retour après la création d'un appareil
                    admin_ascenceur maPagePrecedente = this.PreviousPage as admin_ascenceur;
                    this._monDossierConsultation = new DossierConsultation(maPagePrecedente.IdDossierConsultation);
                    (...)
                }
                else if (this.PreviousPage is admin_recherche)
                {
                    // Edition depuis le moteur de recherche
                    admin_recherche maPagePrecedente = this.PreviousPage as admin_recherche;
                    this._monDossierConsultation = new DossierConsultation(maPagePrecedente.IdDossierConsultation);
                    (...)
                }
                else if (this.PreviousPage is admin_affichage)
                {
                    // Retour depuis l'affichage des détails
                    admin_affichage maPagePrecedente = this.PreviousPage as admin_affichage;
                    this._monDossierConsultation = new DossierConsultation(maPagePrecedente.IdDossierConsultation);
                    (...)
                }
                else if (this.PreviousPage is admin_validation)
                {
                    // Retour depuis la page de validation
                    admin_validation maPagePrecedente = this.PreviousPage as admin_validation;
                    this._monDossierConsultation = new DossierConsultation(maPagePrecedente.IdDossierConsultation);
                    (...)
                }
(...)

Lorsque la compilation nécessaire au mode debug se lance et qu'elle échoue, chaque ligne où apparaît un appel à is admin_xxx ou as admin_xxx est considéré est reporté comme une erreur de type "Le type ou le nom d'espace de noms 'admin_xxx' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)" ... Comme je l'ai souligné, ce qui m'étonne le plus, c'est que ce code se compile parfois sans problème alors qu'à d'autres moments, il est complètement impossible de le compiler ...

En tout cas, merci par avance pour l'aide que tu pourra m'apporter,
Messages postés
9
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
22 mai 2007

Un GRAND MERCI pour ta réponse et pour ton conseil, ça fonctionne parfaitement avec les interfaces auquels je n'avais pas pensé ... :-)