2009-02-11 81 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财产。您应该确保在引用该属性之前取回有效的参考。