2012-10-24 2 views
4

내가 정의 HttpModule을 쓰고 있어요에 대한 Global.asax에 피 내가 사용해야하는 방법 :'는 VaryByCustom'캐시

Response.Cache.SetVaryByCustom("role"); 

는 기본적으로, 사용자의 회원 역할에 따라 응답을 캐시 할 필요가있다. 내 모든 연구 페이지로 저를 지적했습니다

http://msdn.microsoft.com/en-us/library/5ecf4420(v=vs.100).aspx

이 Global.asax에에 GetVaryByCustomString을 무시 suggesed입니다.

global.asax에서이 작업을 수행하지 않을 수있는 방법이 있습니까? 내가 방축 포장 된 응용 프로그램을 만들고 있다고 가정 해 봅시다.

+0

좋은 질문과 잘 모르겠어요 :

이보십시오. 초기에는이 방법이 있었고 이런 종류의 확장 성을 염두에 두지 않았습니다. 따라서 플러그 인 할 수없는 전역 앱을 재정의해야합니다. 어쩌면 다른 누군가가 어떤 생각을 가지고있을 것입니다. –

+0

감사합니다. @DavidEbbo. 하나의 생각 -'HttpApplication'이 인스턴스화 된 지점에서 파이프 라인에 플러그인하는 방법이 있습니까? 그런 다음'GetVaryByCustomString' 메소드를 오버라이드하는 인스턴스를 만드시겠습니까? –

+0

하나의 응용 프로그램 유형 만있을 수 있기 때문에 어려운 것처럼 보입니다. 예 : global.asax에 코드가 있다고 가정합니다. 이 코드는 HttpApplication의 일부가 될 것으로 예상됩니다. 그러나 코드와 사용자의 HttpApplication이 둘 다있을 수는 없습니다. 우리는 다중 상속이 필요합니다 :) –

답변

0

왜 "shrinkwrapped"응용 프로그램이 Global.asax를 배제합니까?

public override string GetVaryByCustomString(HttpContext context, string custom) 
    { 
     if (custom == "role") 
      return Roles.GetRolesForUser().Aggregate((a,b) => a = a+b); 
    } 
+0

죄송합니다, 이미 그렇게하는 법을 알고 있습니다. 나는 global.asax에서 그렇게하지 않기를 바랄 것이다. –