2009-03-27 2 views
1

У меня есть приложение ASP.Net 3.0 SP1, использующее проверку подлинности на языке.ASP.Net Context.User.Identity weirdness

Во время тестирования я заметил, что если бы я просмотрел страницу, которую просматривал другой пользователь, другое имя пользователя будет отображаться в элементе управления на моей главной странице. Context.User.Identity также используется для другого пользователя.

Если я перехожу на другую страницу, где никто другой не просматривает Context.User.Identity правильно.

Я пошевелился и по достоинству оценил предложения.
Спасибо заранее.
Chris

+0

Я видел такую ​​вещь однажды, когда noob помещал пользовательские данные в объект приложения по ошибке, когда предполагалось, что он переходит в Сессию. Но, конечно, вы бы этого не сделали. – DOK

+0

Я был, но я удалил его тоже безрезультатно. – cvoeller

+0

Любые предложения по отладке этого? – cvoeller

ответ

2

Убедитесь, что вы не используете ссылку, которая прилагается к билету аутентификации при использовании cookieless браузера.

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

3

Возможно, потому, что для страницы активировано выходное кэширование: если страница кэширована на стороне сервера с VaryByParam = none, все пользователи получат одну и ту же копию из кеша.

я могу думать только о двух вещах, которые могут привести к этому:

  • Вы хранения пользовательских конкретных данных в месте общего между запросами (например, в статическом (C#)/общий (VB) переменная, в кэше ASP.NET, в объекте Application, ...)

  • У вас включено кэширование вывода.

Проверить:

  • OutputCache директивы в ваших ASPX и ASCX файлов,

  • system.web элемент/кэширования в файле (ах) web.config,

  • Вызывает метод HttpCacheability.SetCacheability.

Если вы не можете найти проблему:

  • Попробуйте создать упрощенную версию приложения, пока не получите самый простой вариант, который до сих пор воспроизводит нежелательное поведение.

  • Во время этого упрощения вы, скорее всего, обнаружите проблему самостоятельно. Если нет, добавьте некоторый код из упрощенной версии.

+0

Я не знаю никакого кэширования вывода, и VaryByParam не находится в решении. – cvoeller

+0

Спасибо за вашу помощь! После прочтения на нем; симптомы должны указывать на выходной кеш. Однако я принял ваш совет и создал простой веб-сайт, который отлично работал, но простая версия помогла мне разобраться с проблемой. – cvoeller

0

Похоже, проблема была вызвана тем, что я устанавливаю targetframe = "_ self" или Target = "_ self". Я удалил все это, и все, кажется, работает нормально.

Еще одно примечание. Если бы я обновил страницу, он также отобразил бы страницу с правильным пользователем.