2009-11-11 4 views
3

는 ASP의 컨텍스트 파라미터처럼 보인다 : 페이지 출력 캐시되면 순 교체 제어 방법은 현재 세션이 누락된다. 이외에도 아약스 통해 대체 컨트롤의 내용을 얻거나, 그렇지 않으면 (데이터베이스 같은) 세션에있을 것입니다 데이터 내가 할 수있는 뭔가가를 저장하기 위해 다른 방법을 사용대체 컨트롤 내에서 현재 세션에 액세스 할 수 있습니까?

?

대체 컨트롤의 기본 asp.net 세션을 사용할 수있는 해결 방법이 있습니까?

<asp:Substitution ID="myid" MethodName="method1"></asp:Substitution> 

public static string method1(HttpContext context) <-- [1] 

페이지가

당신이 context.Session이 값을 액세스하기 전에 null가 아닌 확인하면 어떻게됩니까
+0

세션을 사용할 수 없습니다. 그러나 'context.User.Identity' (멤버쉽 공급자를 사용한다고 가정) _ 가능하므로 기본 사용자 이름이나 ID를 얻을 수 있습니다. 적절한 세션 데이터를로드 할 수 있습니다. 그러나 사용자 이름을 조회 키로 사용할 수있는 데이터베이스와 같이 접근하기 쉬운 장소에 저장해야합니다. 그러나 세션에 저장 한 데이터를 동적으로 생성했지만 그 밖의 다른 데이터는 저장하지 않으면 액세스 할 수 없습니다. –

답변

0

를 캐시 한 후 [1] --- conext.session가 null? Context.Session은 사용자가 첫 번째 요청을 설정하지 않았기 때문에 대체 컨트롤을 사용할 때가 아니라 세션 문제가 발생했습니다. 표준 페이지 수명주기에 있지 않기 때문에 관련 문제가있을 수 있습니다.

ScottGu의 모든에 따르면 사용할 수 있습니다.

이 정적 메서드는 다음 사용할 수있는 표준 ASP.NET 요청, 응답, 사용자, 서버, 세션, 응용 프로그램 내장하고있는이 포함되어 런타임에 HttpContext 개체를 ... 전달됩니다

Tip/Trick: Implement "Donut Caching" with the ASP.NET 2.0 Output Cache Substitution Feature

+1

[이 페이지] (http://forums.asp.net/p/1384173/2939887.aspx)는 해당 기사의 동일한 정보와 관련된 동일한 문제를 해결하는 것으로 보입니다. 그러나 대체 요청은 페이지 수명주기 밖에 있기 때문에 세션에 액세스 할 수 없습니다. 대신 캐시 또는 사용자 개체에서 정보를 가져올 수 있습니까? – toxaq

1

같은 블로그에서 가져 왔습니다.

재 : 팁/트릭 : ScottGu하여 ASP.NET 2.0 출력 캐시 교체 기능과

2007년 2월 23일 (금요일) 오전 1시 반을 "도넛 캐싱"을 구현

안녕 스콧,

난 당신이 세션 개체에 액세스하려고하기 때문에 당신이보고있는 오류라고 생각합니다.

안타깝게도이 시나리오에서는 세션에 액세스 할 수 없다고 생각합니다. 세션 객체는 절대로 생성되지 않기 때문에 (페이지가 생성되지 않았기 때문에).

죄송합니다. (- 당신이 응답 표시해야합니다 당신이 올바른 아래 답변에서 언급 한 바와 같이)

스콧

관련 문제