2009-02-11 9 views
0
namespace X{ public static class URLs 
{ 
    public static TabController tabIdLookUp = new TabController(); 
    public static string DASHBOARD_AUDIT_PAGE = tabIdLookUp.GetTabByName("View My Safety", 2).TabID.ToString(); 
    public static string URL_GENERATE_WITH_MID(String TabName, int PortalId){  { 
     return tabIdLookUp.GetTabByName(TabName, PortalId).TabID.ToString(); 
    } 
}} 

... dans mon contrôle utilisateur que je fais ceci:type initialiseur exception - C#

Response.Redirect("/" + X.URLs.URL_GENERATE_WITH_MID("test", 1)); // this causes the error 

l'erreur est: pour 'X.URLs' Le initialiseur de type a lancé une exception. ---> System.NullReferenceException: Référence d'objet non définie sur une instance d'un objet. à X.URLs..cctor()

ne peut pas déboguer car il fonctionne sur ma boîte locale, mais renvoie cette erreur sur le serveur.

des idées?

P.S. le problème a fini par être trivial NUllReferenceException - GetTabByName() a été de nouveau NULL

+0

Enregistrez-vous l'exception? Et les exceptions internes? J'ai vécu exactement la même erreur, qui ne vaut rien. Heureusement, j'utilisais la récursivité et la journalisation de l'exception interne aussi. –

Répondre

0

Plutôt que d'avoir votre initialiseur pour "DASHBOARD AUDIT PAGE" se référer directement à tabIdLookUp, pourquoi ne pas initialiser ces deux variables dans un constructeur statique et voir si cela résout l'erreur?

namespace X{ public static class URLs 
{ 
    public static TabController tabIdLookUp; 
    public static string DASHBOARD_AUDIT_PAGE; 
    public static string URL_GENERATE_WITH_MID(String TabName, int PortalId){  { 
     return tabIdLookUp.GetTabByName(TabName, PortalId).TabID.ToString(); 
    } 

    static URLs() { 
     tabIdLookUp = new TabController(); 
     DASHBOARD_AUDIT_PAGE = tabIdLookUp.GetTabByName("View My Safety", 2).TabID.ToString(); 
    } 
}} 

Un autre problème que vous pourriez avoir est si GetTabByName retourne une référence NULL, vous ne protégez pas contre cela et référencement juste la propriété .TabID. Vous devriez probablement vous assurer que vous récupérez une référence valide avant de faire référence à la propriété.

Questions connexes