У меня есть файл C # в "app_code" в моем проекте .net.
Файл содержит пространство имен «masterObjectNamespace» и открытый класс «masterObject».
во время инициализации masterObject()
у меня есть следующие 2 строки:
value1 = HttpContext.Current.Items["value"].ToString();
value2 = HttpContext.Current.Session["value"].ToString();
На главной странице я создаю объект этого класса с именем master.
masterObject master = new masterObject();
Все в порядке!
НО, когда я пытаюсь создать объект на некоторых страницах контента, я получаю
"System.NullReferenceException: ссылка на объект не установлена в
экземпляр объекта. "
..
Если я распечатаю две строки на моей странице содержимого, ни одна из них не будет нулевой, обе содержат некоторое значение.
Почему это происходит со мной? Я создаю его так же, как на главной странице.
Ошибка для двух строк, перечисленных выше.
masterObject
- это просто забота о значениях сеанса, и я бы на страницах просто позвонил master.ID()
, чтобы получить идентификатор без какой-либо проверки нуля и прочего, и master.isAdmin()
, чтобы проверить, вошел ли администратор в систему.
Этот вопрос очень размытый, я думаю, это потому, что я не знаю, что происходит и как это объяснить.
Одной из альтернатив является то, что если возможно достичь объекта внутри мастер-страницы, поэтому мне не нужно создавать его еще раз со страницей содержимого, но я не знаю, как.
Спасибо за чтение!
Матовый
Трассировка стека:
[NullReferenceException: ссылка на объект не установлена для экземпляра объекта.]
masterObjectNamespace.masterObject..ctor () в \ ### \ webvol6 \ m9 \ g2dlsc5plaz56r3 \ asdasd.com \ public_html \ App_Code \ masterObject.cs: 34
_Default..ctor () в \ ##### \ webvol6 \ m9 \ g2dlsc5plaz56r3 \ asdasdasd.com \ public_html \ Default.aspx.cs: 11
ASP.default_aspx..ctor () в App_Web_default.aspx.cdcab7d2.nudhzjvt.0.cs: 0
__ASP.FastObjectFactory_app_web_default_aspx_cdcab7d2_nudhzjvt.Create_ASP_default_aspx () в App_Web_default.aspx.cdcab7d2.nudhzjvt.2.cs: 0
System.Web.Compilation.BuildResultCompiledType.CreateInstance () + 32
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath (VirtualPath virtualPath, тип requiredBaseType, контекст HttpContext, логическое allowCrossApp, логическое noAssert) + 119
System.Web.UI.PageHandlerFactory.GetHandlerHelper (контекст HttpContext, строковый запрос, тип VirtualPath virtualPath, строковый физический путь) + 33
System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler (контекст HttpContext, String requestType, VirtualPath virtualPath, String PhysicalPath) + 40
System.Web.HttpApplication.MapHttpHandler (контекст HttpContext, String requestType, путь VirtualPath, String pathTranslated, логическое значение useAppConfig) + 160
System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () + 93
System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 155
Я не знаю, как это читать ?!
редактирование:
я обнаружил, что все работает на страницах с контентом, если я до "protected void Page_load (...)"
пишет:
masterObject master;
и внутри page_load:
master = new masterObject();
Почему это так только для содержательных страниц?