Объект в "app_code" OK на главной странице, но не на странице содержимого. NullReferenceException. httpcontext.items - PullRequest
1 голос
/ 22 марта 2012

У меня есть файл 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();

Почему это так только для содержательных страниц?

...