0

나는 이상한 문제가있다! 나는 ASP.NET 웹 사이트 응용 프로그램 (운 좋게도 아직 살아 있지 않다)을 가지고있다. 어제와 매일 전에 오류없이 응용 프로그램을 실행할 수있었습니다. 어젯밤 늦게 컴퓨터를 껐을 때 제대로 작동했습니다. 오늘 응용 프로그램을 실행했을 때 내 웹 사이트가 오프라인이고 더 이상 온라인으로 되돌리려면 내 루트 디렉토리에서 app_offline.htm 페이지를 제거해야한다는 이상한 메시지가 나타납니다.ASP.NET 웹 사이트에서 MasterPage의 컨트롤 뒤에있는 코드에서 NullReferenceException이 발생하는 이유는 무엇입니까?

이전에이 메시지 나 페이지를 본 적이 없기 때문에 온라인으로 검색하여 SQL Server가 들어오는 요청 (또는 이와 유사한 메시지)을 더 이상 보내지 않을 때 일시적으로 처리기를 찾을 수 있습니다. 그것의 적당한 사용은 당신이 updrading 또는 정비를 할 때 당신의 위치에가는 요구를 멈추기위한 것이다. 나는 그것을 제안대로 제거하기 시작했다. 나는 해결책을 세우고 지었고 그것을 실행하려고했다. 더 이상 실행되지 않습니다.

지금, 나는 내가 일반적으로 Page_Load 이벤트 처리기에서 MasterPage 컨트롤을 액세스하는 위치 뒤에 내 MasterPage 코드에서 오류가 발생합니다 (아래 그림 참조).

protected void Page_Load(object sender, EventArgs e) 
{ 
    breadCrumb.BreadCrumbs = BreadCrumbs; 
    header.MenuItems = MenuItems; 
    footer.Footers = Footers; 
    head.Controls.Add(CreateCssLink("~/Stylesheets/main.css", "screen")); 
    head.Controls.Add(CreateJavaScriptLink("~/Scripts/site.js")); 
    if (Context.Session != null && Session["layout"] == null) Session["layout"] = "single"; 
    if (!ArePreferencesVisible) preferences.Visible = false; 
} 

여기 분명히하고 싶습니다.이 코드에는 오류가 없습니다. MasterPage에는이 코드의 해당 요소와 일치하는 올바르게 명명 된 요소가 있습니다. 그것은 오늘까지 예상대로 항상 작동했으며, 마지막 작업 이래로 어떤 코드도 변경하지 않았습니다. breadCrumb 요소가 null이기 때문에 지금은 첫 번째 줄에 NullReferenceException을 얻습니다. 사실 여기에서 참조되는 페이지의 모든 요소는 null입니다.

일반적으로 페이지 요소는 Page_Load 이벤트가 발생할 때까지 초기화되었습니다. 무엇이 이것을 멈추게 할 수 있습니까?

나는 MasterPage와 파일의 코드 숨김이 여전히 연결되어 있는지 확인했다. 이 코드를 Page_LoadComplete 이벤트 핸들러로 옮겨 보았지만 그 단계에서도 컨트롤이 아직 초기화되지 않았습니다. 이전에 제대로 작동 했으므로 코드를 변경하지 않아도됩니다.

나는 또한이 코드를 주석 처리했으며 웹 사이트는 스타일이 없어도 작동했습니다. 흥미롭게도 원래 코드를 이벤트 처리기로 반환하고 페이지를 새로 고치면 이전과 마찬가지로 실제로 다시 작동했습니다. 여러 페이지를 성공적으로로드했으며 응용 프로그램을 다시 시작한 다음 동일한 오류가 다시 발생했습니다. 청소, 건물 변경, 솔루션 구성 변경 또는 응용 프로그램과 Visual Studio를 다시 시작하는 데 아무런 차이가 없습니다.

app_offline.htm이 빨간색 청어인지 확실하지 않지만 어느 쪽인지 이전에 본 적이 없으므로 어떻게 든 연결될 수 있습니다. 필자가 읽은 바로는 서버를 제거하면 서버가 자동으로 응용 프로그램 도메인을 다시 시작하므로 연결을 볼 수 없습니다.

나는 누군가가이 이상한 상황에 빠지기를 바란다. 왜냐하면 나는 아이디어가 다 빠져서 이것이 고쳐지지 않을 때까지 내 웹 사이트를 실행할 수 없기 때문이다.

+0

nether는 SQL Server가 사이트에서 app_offline.htm을 설정하는 방법을 찾을 수 있다고 생각하지 않습니다. – Aristos

+0

Google에'app_offline.htm'을 입력했고 세 번째 결과는 다음과 같습니다. http://www.daniweb.com/web-development/aspnet/threads/215912/why-app_offline.htm-is-created-automatically- 뭐야 - 미스터리. 너무 열심히 보지 않은 것 같습니다. 어느 쪽이든, 나는 SQL Server가 그렇게했다고 주장하지 않았습니다. – Sheridan

+0

visual studio 2008에서이 파일을 추가한다고 말하면 정확합니다. Visual Studio에서 프로젝트를로드 할 때이 파일을 추가하고 프로젝트가 완전히로드 된 경우 삭제합니다. 어떤 이유로 든 파일을 삭제하지 못하면 파일이 남아 있습니다. 사이트를 개발할 때 시각적 스튜디오. SQL은 어디에 놓을 지 몰랐다. 어쨌든 나는 이것을 다시 점검 할 것이지만, 나는 SQL이 그렇게 생각하지 않는다. – Aristos

답변

0

좋아, 결국 문제를 추적했습니다. 나는 며칠 전부터 웹 사이트의 이전 백업을 가지고 있었기 때문에 그 작업을로드했고 지난 몇 일간의 작업을 놓치기는했지만 작동했습니다. 최신 프로젝트 코드를 Visual Studio> 프로젝트 폴더에 복사하고 Visual Studio> 웹 사이트 폴더에 이전 코드를 남겨 두었습니다. 솔루션을로드하고 다시 정상적으로 실행되었습니다.

기본적으로 웹 사이트 파일을 비교하고 차례로 업데이트하고 주기적으로 응용 프로그램을 실행합니다.결국 응용 프로그램이 작동을 멈췄습니다. 내가 마지막으로 업데이트 한 파일은 MasterPage 파일을 확장하여 문제가있는 파일입니다.

내가 수행 한 작업은 MasterPage에있는 Page_Load 비어있는 이벤트 처리기를 주석 처리하는 것입니다. 그게 왜이 문제를 일으키는 지 이해할 수 없기 때문에 설명하는 설명이 도움이되고 감사 할 것입니다.

MasterPage은 홈 페이지와 다른 몇 페이지에서만 사용되므로 변경 한 날 밤에 문제가 발생하지 않은 이유를 설명합니다. (변경 후 해당 페이지의 MasterPage을 사용한 페이지는 보지 못했습니다.) 나는 그때를 추적하는 것이 훨씬 쉬웠을 것이기 때문에 내가 가지고 있었으면 좋겠지 만, 그러한 것이 인생이다.

그래서 최신 코드를 모두 바꿔서 이벤트 핸들러를 MasterPage에 다시 추가하고 마지막으로 모든 것이 다시 작동합니다.

관련 문제