bonjour,
Je rencontre un problème que je n'arrive pas à résoudre, j'ai besoin de vos lumières.
je développe un site basé sur une structure de composants web. La partie administration gère des administrateurs qui ont chacun access à des composants et à des pages de composants.
Les données administrateur sont stockée dans une structure. l'application marche parfaitement en local mais lors du déploiement sur linux, ca bloque à un endroit du code et je n'arrive pas à comprendre pourquoi. lors du login d'un administrateur j'ai invariablement l'erreur suivante: La variable 'ComponentAuthorised' n'a pas encore été initialisée. Elle ne peut donc pas être utilisée.
Dump de l'erreur du module <WD90VM.DLL> <9.01Be>.
- Appel WL : Traitement de <Procedures globales de ComponentAdministrator.IdentifyAdmAccess>, ligne <41>, thread <0>
- Niveau : erreur fatale (EL_FATAL)
- Code erreur : 1081
- Code erreur WD55 : 0
- Pas de code d'erreur système
- Pas de message d'erreur système
- Que s'est-il passé ? La variable 'ComponentAuthorised' n'a pas encore été initialisée. Elle ne peut donc pas être utilisée.
- Pas d'info de debug
- Infos attachées : EIT_DATEHEURE : 22/03/2006 04:07:24 EIT_PILEWL : Procédure globale IdentifyAdmAccess (serveur) (Procedures globales de ComponentAdministrator.IdentifyAdmAccess), ligne 41 Clic de Submit ( FondAdminCentral ) (serveur) (FrameAdminComponent.FondAdminCentral.Submit), ligne 3
- Identifiant dans le .err : 1081
(0025, ERR_MSG_BOX)
Invalid or incomplete multibyte or wide character (2)
la partie du code qui bloque est celle ci:
Administrateur:ComponentAuthorised[Indice][1]=ComponentAccessModule:ComponentPageName
La procédure est celle-ci:
PROCEDURE IdentifyAdmAccess(AdminLogin,AdminPassword)
HExécuteRequête(AdminAccess,hRequêteDéfaut,AdminLogin,AdminPassword) HLitPremier(AdminAccess,IDAdministrators)
SWITCH (HNumEnr(AdminAccess)) CAS 0: // Aucun administrateur possédant de login et password n'a pu être identifié Info("IDENTIFICATION IMPOSSIBLE","Vous avez peut-être mal renseigné vos données d'administrateur, veuillez recommencer s'il vous plait.") Administrateur:AccessGranted=Faux CAS 1: // Identification réussie => on donne accès Administrateur:AccessGranted=Vrai Administrateur:sAdminID=AdminAccess.IDAdministrators Administrateur:sAdminLevel=AdminAccess.AdminLevel Administrateur:sAdminRubrique=AdminAccess.Category Administrateur:sFirstName=AdminAccess.FirstName Administrateur:sLastName=AdminAccess.LastName Administrateur:ComponentUsed=AdminAccess.AuthorisedComponent
// Recuperation dans le tableau des pages d'accueil des composants authorisées pour l'administrateur // Sélection des composants authorisés pour l'administrateur en cours // Parcours de toutes les sous-chaînes Indice est un entier=1 SousChaîne est une chaîne = ExtraitChaîne ( Administrateur:ComponentUsed , rangPremier , ":") // Execution de la requete pour obtenir les pages autorisées GetComponentMainPageName(SousChaîne) Administrateur:ComponentAuthorised[Indice][1]=ComponentAccessModule:ComponentPageName Administrateur:ComponentAuthorised[Indice][2]=ComponentAccessModule:ComponentLogicName // info("Composant1 page",ComponentAccessModule:ComponentPageName) // info("Composant1 composant",ComponentAccessModule:ComponentLogicName) TANTQUE SousChaîne <> EOT // On passe au composant suivant SousChaîne = ExtraitChaîne (Administrateur:ComponentUsed, rangSuivant , ":" ) // Execution de la requete pour obtenir la page GetComponentMainPageName(SousChaîne) Indice+=1 Administrateur:ComponentAuthorised[Indice][1]=ComponentAccessModule:ComponentPageName Administrateur:ComponentAuthorised[Indice][2]=ComponentAccessModule:ComponentLogicName // info("Composant "+Indice+" page",ComponentAccessModule:ComponentPageName) // info("Composant"+Indice+" composant",ComponentAccessModule:ComponentLogicName) FIN
// Récupération des données du composant correspondant à la category par défaut de l'administrateur pComponentCategory est une chaîne=Administrateur:sAdminRubrique HExécuteRequête(GetComponentID,hRequêteDéfaut,pComponentCategory) HLitPremier(GetComponentID,IDComponentFile) Administrateur:DefaultComponentID=GetComponentID.IDComponentFile Administrateur:DefaultComponentLogicName=GetComponentID.ComponentLogicName Administrateur:sPageName=GetComponentID.ComponentMainPage HAnnuleDéclaration(GetComponentID)
AUTRE CAS: Info("IDENTIFICATION IMPOSSIBLE","Vous avez peut-être mal renseigné vos données d'administrateur, veuillez recommencer s'il vous plait.") Administrateur:AccessGranted=Faux END
// Renvoi de la structure à l'appelant RENVOYER Administrateur
La structure administrateur est globale dans le composant et globale dans le projet appelant. je ne comprends pas pourquoi tout marche bien en local et lors du déploiement ca ne marche plus.
Si vous avez des idées je suis intéressé.
PS: Malgré ce petit problème, je vous encourage tous à développer les gros projet sur les bases des composant - Bravo PC SOFT |