문제

그것은 것 같습니다 compilationMode = 절대 세션이 제대로 연결되도록 허용하지 않습니다.

먼저 그것을 불평합니다 enbalesessionState 이 페이지에서는 지침이 허용되지 않습니다.

명시 적으로 할당 System.Web.SessionState.irequiressessionState 페이지 [1] 페이지에는 NULL 참조 예외 (주변. 세션 액세스)를 피하지만 여전히 지속적으로 지속되거나 전선 세션이 제대로 작동하지 않습니다.

ASP.NET 세션을 성공적으로 사용한 사람이 있습니다 compilationMode = 절대?

개념적으로, 왜 이것들이 분리되어야합니까?

[1] - http://msdn.microsoft.com/en-us/library/system.web.ui.compilationmode.aspx

도움이 되었습니까?

해결책

나는 당신이있는 정확한 상황을 알지 못하지만 당신이 말하는 것은 정확합니다 - page + iRequiressessionState = session 사용 가능합니다. 여기에 당신이하는 일이 있습니다. 먼저 세션 상태를받을 페이지의 기본 클래스를 정의합니다.

public class BasePage : Page, IRequiresSessionState
{
}

그런 다음 Nocompile 페이지에서 다음 선언을합니다.

<%@ Page Language="C#" CompilationMode="Never" Inherits="BasePage" %>

예상대로 작동합니다. 세션 상태를 사용할 수 있습니다. 이제 두 번째 질문에 대해 거의 더 이상 더 이상 더 이상 "개념적으로, 왜 이것들이 분리되어야 하는가?" 기본적으로 그 페이지

public class Page : TemplateControl, IHttpHandler
{
}

클래스는 iRequiressessionState를 구현하지 않으므로 세션 상태가 없습니다. ASP.NET가하는 일은 런타임에 세션을 제공하는 클래스를 컴파일하는 것입니다. IREQUIRESSESSIONSTATE. 그러나 asp.net은 우리의 기본값을 컴파일합니다 .aspx ui는 다음과 같은 클래스로 컴파일합니다.

public class default_aspx : Default, IRequiresSessionState, IHttpHandler
{
}

이제는 세션 상태가 전달되기를 원한다고 명시 적으로 말합니다. 이 때문입니다 "enbalesessionState" @페이지 지시문은 기본적으로 true로 설정됩니다. 이제 Default.aspx를 지정하여 컴파일 장치라고 말할 때 CompilationMode="Never", 그러면이 클래스는 결코 생성되지 않으며 세션 상태를 얻지 못하면 사용합니다.enbalesessionState"의미가 없어서 장애인.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top