类型初始化程序异常 - C#

时间:2009-02-11 06:02:23

标签: c# asp.net .net-2.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();
    }
}}

... 在我的用户控件中我这样做:

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()正在撤回NULL

1 个答案:

答案 0 :(得分:0)

不是让“DASHBOARD AUDIT 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返回一个NULL引用,你就不会对此进行保护而只是引用.TabID属性。您可能应该确保在引用该属性之前获得有效的引用。