在HttpContext中标识页面实例的独特方法

时间:2010-07-08 19:26:43

标签: asp.net httpmodule httpcontext

您可以通过Request.Path获取HttpContext中页面的名称。

有没有办法区分来​​自同一页面的不同请求?

那是当yourpage.aspx的两个不同实例发出请求时,如何使用HttpContext区分这两个实例?

4 个答案:

答案 0 :(得分:3)

你可能想在基础页面类中这样做,但这就是我要做的事情

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();
    }
}

然后在代码中的其他地方使用HttpContext ......

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

答案 1 :(得分:2)

ASP.NET中内置的任何内容都不允许您区分不同的“页面实例”或来自它们的请求。

但是,您可以轻松地在视图状态中添加Guid以唯一标识每个页面。当您在Page类本身时,此机制可以正常工作。如果需要在到达页面处理程序之前识别请求,则需要使用不同的机制(因为视图状态尚未恢复)。

Page.LoadComplete事件是检查Guid是否与页面关联的合理位置,如果不是,则创建一个。

答案 2 :(得分:1)

如果您正在使用身份验证,那么您是否可以区分哪个用户提交了该页面?

您可以使用System.Web.Httpcontext.Current.User.Identity.Name

答案 3 :(得分:1)

只是抛弃它:NInject(和其他DI容器)使用基于HttpContext.Current对象本身的作用域机制,因此根据您尝试做的事情,您可以尝试从中检索状态对象DI容器,从那里开始。