HttpContext 내에서 Request.Path를 통해 페이지 이름을 가져올 수 있습니다.HttpContext 내 페이지 인스턴스를 식별하는 고유 한 방법
동일한 페이지의 서로 다른 요청을 구별 할 수있는 방법이 있습니까?
즉, yourpage.aspx의 두 인스턴스가 요청할 때 HttpContext를 사용하여 두 인스턴스를 구별 할 수 있습니까?
HttpContext 내에서 Request.Path를 통해 페이지 이름을 가져올 수 있습니다.HttpContext 내 페이지 인스턴스를 식별하는 고유 한 방법
동일한 페이지의 서로 다른 요청을 구별 할 수있는 방법이 있습니까?
즉, yourpage.aspx의 두 인스턴스가 요청할 때 HttpContext를 사용하여 두 인스턴스를 구별 할 수 있습니까?
당신은 아마 기본 페이지 클래스에서이 작업을 수행 할 수 있지만, 여기에 내가 다음 코드에서 다른 곳으로 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;
}
불행하게도 현재 처리기에 액세스하는 곳에서 처리가 진행되는 시점에 페이지가 인스턴스화되기 전에 null입니다. – Steve
음 ... 그럼 당신이 무엇을 식별하려고합니까 ??? 원래 질문에서 : "yourpage.aspx의 두 인스턴스가 요청할 때 HttpContext를 사용하여 두 인스턴스를 구별 할 수 있습니까?" –
ASP.NET에 내장 된 기능이 없으면 다른 "페이지 인스턴스"또는 요청을 구분할 수 없습니다.
그러나보기 상태에 Guid
을 쉽게 추가하여 각 페이지를 고유하게 식별 할 수 있습니다. 이 메커니즘은 Page 클래스 자체에있을 때 잘 작동합니다. 페이지 핸들러에 도달하기 전에 요청을 식별해야하는 경우, 뷰 스테이트가 아직 복원되지 않았기 때문에 다른 메커니즘을 사용해야합니다.
Page.LoadComplete
이벤트는 Guid
이 페이지와 연결되어 있는지 확인하기에 적절한 장소이며, 그렇지 않은 경우 확인하십시오.
GUID를 viewstate에 추가하면 고유 한 페이지 인스턴스가 아닌 고유 한 브라우저 만 식별됩니다. 나는 그러나 그가 당신이 찾고있는 대답을 가지고 있을지도 모른다고 생각한다. –
Guid 아이디어는 포스트 백 페이지를 여전히 서버에 보관 된 데이터로 다시 연결하는 데 매우 효과적으로 사용합니다. 하나는 viewstate 크기를 주시해야하지만 추가 GUID는 너무 복잡하지 않습니다. –
인증을 사용하는 경우 어떤 사용자가 페이지를 제출했는지 구분할 수 있습니까?
System.Web.Httpcontext.Current.User.Identity.Name
을 사용할 수 있습니다.
단지 던지기 이것 저기 : NInject (및 다른 DI 컨테이너)는 HttpContext.Current 객체 자체를 기반으로하는 범위 지정 메커니즘을 사용하므로 수행하려는 작업에 따라 DI 컨테이너에서 상태 객체를 검색하고 그곳에.
왜 요청을 구분 하시겠습니까? 당신은 정교 할 수 있습니까? – madaboutcode
그의 ASP.NET 서적에서 Dino Esposito는 httpmodules을 사용하여 포스트 백과 리프레시를 구분하여 동일한 페이지 처리의 여러 반복을 방지하지만 솔루션은 페이지 인스턴스 하나가 제공되는 경우에만 작동합니다. httpcontext를 사용하는 httpmodule에서 동일한 페이지를 구별 할 수 있다면 문제를 해결할 수 있다고 생각합니다. 나는 다른 해결책이 존재한다는 것을 알고 있으며 아마 그것들을 사용할 수도 있지만 가능한 것을 보는 것입니다. – Steve
실제로 동일한 브라우저/사용자의 요청을 식별하려고합니까? –