2010-07-08 2 views
1

HttpContext 내에서 Request.Path를 통해 페이지 이름을 가져올 수 있습니다.HttpContext 내 페이지 인스턴스를 식별하는 고유 한 방법

동일한 페이지의 서로 다른 요청을 구별 할 수있는 방법이 있습니까?

즉, yourpage.aspx의 두 인스턴스가 요청할 때 HttpContext를 사용하여 두 인스턴스를 구별 할 수 있습니까?

+1

왜 요청을 구분 하시겠습니까? 당신은 정교 할 수 있습니까? – madaboutcode

+0

그의 ASP.NET 서적에서 Dino Esposito는 httpmodules을 사용하여 포스트 백과 리프레시를 구분하여 동일한 페이지 처리의 여러 반복을 방지하지만 솔루션은 페이지 인스턴스 하나가 제공되는 경우에만 작동합니다. httpcontext를 사용하는 httpmodule에서 동일한 페이지를 구별 할 수 있다면 문제를 해결할 수 있다고 생각합니다. 나는 다른 해결책이 존재한다는 것을 알고 있으며 아마 그것들을 사용할 수도 있지만 가능한 것을 보는 것입니다. – Steve

+0

실제로 동일한 브라우저/사용자의 요청을 식별하려고합니까? –

답변

3

당신은 아마 기본 페이지 클래스에서이 작업을 수행 할 수 있지만, 여기에 내가 다음 코드에서 다른 곳으로 HttpContext를 사용

public partial class Default : System.Web.UI.Page 
{ 
    private Guid _instanceID; 

    public Guid InstanceID 
    { 
     get { return _instanceID; } 
    } 

    /// <summary> 
    /// Constructor 
    /// </summary> 
    public Default() 
    { 
     this._instanceID = Guid.NewGuid(); 
    } 
} 

을 어떻게 할 것인지의 ...

 if (HttpContext.Current.CurrentHandler is Default) 
     { 
      ((Default)HttpContext.Current.CurrentHandler).InstanceID; 
     } 
+0

불행하게도 현재 처리기에 액세스하는 곳에서 처리가 진행되는 시점에 페이지가 인스턴스화되기 전에 null입니다. – Steve

+0

음 ... 그럼 당신이 무엇을 식별하려고합니까 ??? 원래 질문에서 : "yourpage.aspx의 두 인스턴스가 요청할 때 HttpContext를 사용하여 두 인스턴스를 구별 할 수 있습니까?" –

2

ASP.NET에 내장 된 기능이 없으면 다른 "페이지 인스턴스"또는 요청을 구분할 수 없습니다.

그러나보기 상태에 Guid을 쉽게 추가하여 각 페이지를 고유하게 식별 할 수 있습니다. 이 메커니즘은 Page 클래스 자체에있을 때 잘 작동합니다. 페이지 핸들러에 도달하기 전에 요청을 식별해야하는 경우, 뷰 스테이트가 아직 복원되지 않았기 때문에 다른 메커니즘을 사용해야합니다.

Page.LoadComplete 이벤트는 Guid이 페이지와 연결되어 있는지 확인하기에 적절한 장소이며, 그렇지 않은 경우 확인하십시오.

+0

GUID를 viewstate에 추가하면 고유 한 페이지 인스턴스가 아닌 고유 한 브라우저 만 식별됩니다. 나는 그러나 그가 당신이 찾고있는 대답을 가지고 있을지도 모른다고 생각한다. –

+0

Guid 아이디어는 포스트 백 페이지를 여전히 서버에 보관 된 데이터로 다시 연결하는 데 매우 효과적으로 사용합니다. 하나는 viewstate 크기를 주시해야하지만 추가 GUID는 너무 복잡하지 않습니다. –

1

인증을 사용하는 경우 어떤 사용자가 페이지를 제출했는지 구분할 수 있습니까?

System.Web.Httpcontext.Current.User.Identity.Name을 사용할 수 있습니다.

1

단지 던지기 이것 저기 : NInject (및 다른 DI 컨테이너)는 HttpContext.Current 객체 자체를 기반으로하는 범위 지정 메커니즘을 사용하므로 수행하려는 작업에 따라 DI 컨테이너에서 상태 객체를 검색하고 그곳에.

관련 문제