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
答案 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属性。您可能应该确保在引用该属性之前获得有效的引用。