2013-04-09 7 views
3

Сначала я хотел бы сказать: Да, я знаю, что есть много Вопросов, которые похожи на мои, но не то же самое.NullReferenceException on 2nd Page_Load

Когда я запускаю один из моих 12 сайтов на моей машине-разработчике, все работает замечательно, а также на сервере 11 из них работают без проблем.

Когда я начинаю 12-й сайта это первое работает отлично, но когда это может вызвать обратную передачу (кнопку, DropDownList с AutoPostBack, и т.д ...) Я получаю следующее сообщение об ошибке:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.] 
    Infoscreen.Anzeigeeinstellungen.Page_Load(Object sender, EventArgs e) in C:\Users\Krusty\Desktop\Schule\Diplomarbeit\Infoscreen\Infoscreen\Anzeigeeinstellungen.aspx.cs:97 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +24 
    System.Web.UI.Control.LoadRecursive() +70 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3047 

пути (C : \ Users \ Krusty \ Desktop \ Schule \ Diplomarbeit \ Infoscreen \ Infoscreen \ Anzeigeeinstellungen.aspx.cs) - это тот, где файл находился на моей машине-разработчике. но почему ??? Я никогда не кодировал какой-либо путь в своей программе, и даже воссоздать сайт не получилось.

Что мне делать? Любые советы/подсказки будут оценены.

EDIT:

91 if (!Page.IsPostBack) 
92 { 
93  Response.Cookies["Infoscreen_Anzeigeeinstellungen_Ausgewählte_Abteilung"].Value = ausgewählte_Abteilung.ToString(); 
94 } 
95 else 
96 { 
97  ausgewählte_Abteilung = Request.Cookies["Infoscreen_Anzeigeeinstellungen_Ausgewählte_Abteilung"].Value; 
98 } 

EDIT:

Да, IIS настроен на использование Cookies

EDIT:

РЕШИТЬ! в VisualStudio2010 сервере полукокса «A» работает ...
в IIS7 она не ...
так куки не будет установлена ​​propperly и запрос прибудет вешает

назвали печенье «Infoscreen_Anzeigeeinstellungen_Ausgewaehlte_Abteilung» и она работает отлично теперь

может быть закрыт

+0

показать код, который включает Anzeigeeinstellungen.aspx.cs, строка 97 – Igor

+0

Этот путь является всего лишь артефактом на вашем компьютере и не означает, что сервер работает с вашего компьютера. Вам просто нужно посмотреть строку 97 в этом файле, чтобы определить, что может быть неправильным. – juharr

+0

[NullReferenceException Wiki] (http: // stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –

ответ

2

Как вы уже нашли свои себя, но только для будущей ссылки:

В вашем коде для обработки файла cookie «имя» разрешено в C# (с использованием a-umlaut), но согласно RFC2616 токен для файла cookie ДОЛЖЕН содержать подмножество символов US-ASCII.

if (!Page.IsPostBack) 
    { 
     Response.Cookies["Infoscreen_Anzeigeeinstellungen_Ausgewählte_Abteilung"].Value = ausgewählte_Abteilung.ToString(); 
    } 
    else 
    { 
     ausgewählte_Abteilung = Request.Cookies["Infoscreen_Anzeigeeinstellungen_Ausgewählte_Abteilung"].Value; 
    } 

Так способ иметь безопасный ключ куки в случае, если ваш cookiekey генерируется на основе формы/controlnames может быть:

static string TokenRFC2616(string key) 
{ 
    const string separators = "()|<>@,;:\\\"/[]?={} "; 
    var chars = from ch in key.Normalize(NormalizationForm.FormD) 
      where CharUnicodeInfo.GetUnicodeCategory(ch) 
        != UnicodeCategory.NonSpacingMark && 
        separators.IndexOf(ch)==-1 
      select ch; 
    return String.Concat(chars); 
} 

string cookiekey = TokenRFC2616(
     "Infoscreen_Anzeigeeinstellungen_Ausgewählte_Abteilung"); 
if (!Page.IsPostBack) 
{ 
    Response.Cookies[cookieKey].Value = ausgewählte_Abteilung.ToString(); 
} 
else 
{ 
    ausgewählte_Abteilung = Request.Cookies[cookieKey].Value; 
} 

(в приведенном выше примере имя куки будет Infoscreen_Anzeigeeinstellungen_Ausgewahlte_Abteilung )

Смежные вопросы