您可以通过Request.Path获取HttpContext中页面的名称。
有没有办法区分来自同一页面的不同请求?
那是当yourpage.aspx的两个不同实例发出请求时,如何使用HttpContext区分这两个实例?
答案 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容器,从那里开始。