Уникальный способ идентифицировать экземпляр страницы в HttpContext - PullRequest
1 голос
/ 08 июля 2010

Вы можете получить имя страницы в HttpContext через Request.Path.

Есть ли способ отличить разные запросы от одной и той же страницы?

То есть, когда два разных экземпляра yourpage.aspx отправляют запрос, как вы можете различить два, используя HttpContext?

Ответы [ 4 ]

3 голосов
/ 09 июля 2010

Вы, вероятно, хотите сделать это в классе базовой страницы, но вот что я бы сделал

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;
        }
2 голосов
/ 08 июля 2010

Ничто из встроенного в ASP.NET не позволит вам отличать разные "экземпляры страниц" или запросы от них.

Однако вы можете легко добавить Guid в состояние просмотра, чтобы однозначно идентифицировать каждую страницу. Этот механизм прекрасно работает, когда вы находитесь в самом классе Page. Если вам нужно идентифицировать запросы до того, как вы достигнете обработчика страницы, вам нужно использовать другой механизм (так как состояние просмотра еще не восстановлено).

Событие Page.LoadComplete является разумным местом для проверки, связан ли Guid со страницей, и, если нет, создайте его.

1 голос
/ 09 июля 2010

просто добавив это: NInject (и другие DI-контейнеры) используют механизм видимости, основанный на самом объекте HttpContext.Current, поэтому в зависимости от того, что вы пытаетесь сделать, вы можете попытаться получить объект состояния из DI контейнер и идти оттуда.

1 голос
/ 08 июля 2010

Если вы используете аутентификацию, сработает ли для вас распознавание, какой пользователь отправил страницу?

Вы можете использовать System.Web.Httpcontext.Current.User.Identity.Name.

...