2009-02-11 83 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(); 
    } 
}} 

... 在我的用戶控制我這樣做:類型初始化異常 - C#

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

的錯誤是:對 'X.URLs' 的類型初始值引發異常。 ---> System.NullReferenceException:未將對象引用設置爲對象的實例。在X.URLs..cctor()

無法調試,因爲它在我的本地盒上工作,但在服務器上引發該錯誤。

有什麼想法?

P.S.這個問題最終是一個微不足道的NullReferenceException - GetTabByName()是returing NULL

+0

你記錄異常嗎?內部例外情況如何?我經歷了完全相同的錯誤,這是毫無價值的。幸運的是,我正在使用遞歸併記錄內部異常。 – 2009-02-11 06:49:20

回答

0

與其讓你的「儀表盤審計PAGE」初始化指tabIdLookUp直接,爲什麼不能代替靜態構造函數初始化這兩個變量,看看是否修復錯誤?

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(); 
    } 
}} 

你可以有另外一個問題是,如果GetTabByName返回一個空引用,你不保護對抗,只是引用.TabID財產。您應該確保在引用該屬性之前取回有效的參考。