В ASP.NET (сторона сервера), как я могу однозначно определить одно окно браузера от другого, которые находятся под тем же cookiedbased sessionId

Пользователи моего веб-приложения могут иметь больше чем одно окно браузера (или вкладка) открытый и указали на ту же страницу. Мы используем основанный на cookie идентификатор сессии, и пользователь будет обычно работать в рамках того же идентификатора сессии в обоих браузерах/вкладках. Я хотел бы смочь однозначно определить, какое окно браузера (и вкладка), который запросил страницу ASP.NET (для проверки, те данные, хранившие на сессии, не становятся перепутанными).

(например, Я был бы счастлив, если браузер генерирует и отправит window/tab-id с запросом HTTP, поскольку он публикует HTTP_USER_AGENT),

Какие-либо идеи?

- thomas

6
задан thomas a. h. 29 January 2010 в 13:15
поделиться

3 ответа

Если бы я собирался реализовать что-то вроде этого, я бы, вероятно, начнусь с словаря <Тип, список > и хранить это на сеансе пользователей. Я также бы, вероятно, сделаю это пользовательским типом, который делегирует словарь и имеет фабричный метод, который работает, похожее на

public Guid GeneratePageIdentifier(Page thepage)
{
    var guid = Guid.New();

    if(_dictionary[thepage.GetType()] == null)
        _dictionary[thepage.GetType()] = new List<Guid> { guid };
    else
        ((List<Guid>)_dictionary[thepage.GetType()]).Add(guid);

    return guid;

}

, затем встроить GUID, который возвращается из этого метода на ViewState страницы. На ваших методах страницы, которые выполняют действия, которые вам необходимо проверить, какую страницу это вы сможете проверить, что GUID находится внутри коллекции, сделай что-то. Вы также можете также захотеть реализовать пользовательский тип с помощью свойства GUID для Enscapulate дополнительной информации о том, почему вы делаете это или то, что вам нужно, чтобы это было значимым.

2
ответ дан 17 December 2019 в 02:28
поделиться

Это по умолчанию невозможно из-за природы безгражданской сети Web, , но , но вы можете добавить «идентификатор страницы», который генерируется с каждой открытой страницей и передается для каждое действие.

Я рекомендую вам рефакторировать приложение таким образом, чтобы эти миксы не могут произойти, независимо от того, на какой странице / вкладке / окне запрос возникает.

1
ответ дан 17 December 2019 в 02:28
поделиться

ViewState на каждой странице будет другим, возможно, вы можете использовать какой-то уникальный идентификатор, созданный на каждой странице, загруженной?

2
ответ дан 17 December 2019 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: