IIS 7.0 не сохраняет переменные сеанса

IIS 7.0 не сохраняет переменные сеанса

Если я размещаю страницу ASP.NET с помощью:

<%@ Page Language="C#" %>

<!DOCTYPE html>    
<script runat="server">

    protected void btn_Click(object sender, EventArgs e)
    {
        lbl.Text = HttpContext.Current.Session["a"] == null ? 
                       "null" : 
                       HttpContext.Current.Session["a"].ToString();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            HttpContext.Current.Session["a"] = "A";
            lbl.Text = "assigned Session Variable";
        }
    }
</script>

<html>
<head>
    <title>Testing Sessions</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btn" runat="server" Text="reload" OnClick="btn_Click" />
        <hr />
        <asp:Label ID="lbl" runat="server" />
    </div>
    </form>
</body>
</html>

при первом запуске я получаю assigned Session Variableтекст, но при щелчке объект сеанса всегдаnull

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

отлично работает на IIS 6.0 и Cassini (под VS 2008 и 2010).

Я начинаю терять представление о том, что происходит :o(

Любая помощь будет высоко оценена!


процесс примера страницы выше

альтернативный текст

альтернативный текст


Больше тестовпоказывает, что это происходит только в IE (в данном случае ie8), Firefox, Safari, Opera, Chrome — все они дают правильный «ответ»

альтернативный текст


проверитьскрин-каст ситуации

решение1

Вам необходимо изменить URL par_2008_64 на par200864, ​​поскольку в проводнике подчеркивание не работает и сеанс становится нулевым.

решение2

Традиционное состояние сеанса требует включения куки для рассматриваемого сайта. Возможно ли, что ваш Internet Explorer настроен на блокировку куки, поступающих с сервера, а другие браузеры не настроены таким образом? Это объяснило бы разницу в поведении. Вы должны иметь возможность использовать Fiddler (см.http://www.fiddler2.com/fiddler2/) для просмотра HTTP-трафика между IE и сервером и проверки того, отправляет ли IE куки обратно на сервер. Я сильно подозреваю, что ответ «нет».

Потенциально вы можете установить сеансы без cookie-файлов (например,http://msdn.microsoft.com/en-us/library/ms972429.aspx) в вашем файле web.config, чтобы это подтвердить; если cookieless работает, то все в порядке.

решение3

Если кто-то обнаружит этот «баг», сделайте простую вещь, чтобы его устранить.

  • удалить виртуальное приложение
  • создать новое виртуальное приложение (может иметь то же имя, что и предыдущее)

решение4

Была та же проблема у клиента. Удаление и добавление приложения не решит проблему в этом случае. Хитрость в следующем: замените или удалите подчеркивание в URL!

Связанный контент