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지만 클릭하면 Session 개체는 항상null

일반 세션 변수를 사용하기 위해 켜거나 끄는 데 필요한 옵션이 있습니까?

IIS 6.0 및 Cassini(VS 2008 및 2010)에서 잘 작동합니다.

무슨 일이 일어나고 있는지 전혀 알 수가 없어요 :o(

어떤 도움이라도 대단히 감사하겠습니다!


위 예시 페이지의 과정

대체 텍스트

대체 텍스트


추가 테스트이는 IE(이 경우 8), Firefox, Safari, Opera, Chrome에서만 발생하며 모두 올바른 "답변"을 제공합니다.

대체 텍스트


~을 체크 해봐상황의 스크린캐스트

답변1

탐색기에서 밑줄이 작동하지 않고 세션이 null이 되기 때문에 par200864에서 URL par_2008_64를 변경해야 합니다.

답변2

기존 세션 상태에서는 문제의 사이트에 대해 쿠키를 활성화해야 합니다. Internet Explorer에서는 서버에서 오는 쿠키를 차단하도록 설정했는데 다른 브라우저에서는 그렇게 설정되지 않은 것이 가능합니까? 그것은 행동의 차이를 설명합니다. Fiddler를 사용할 수 있어야 합니다(참조.http://www.fiddler2.com/fiddler2/) IE와 서버 간의 HTTP 트래픽을 관찰하고 IE가 쿠키를 서버로 다시 보내는지 확인합니다. 나는 대답이 "아니요"라고 강력히 의심합니다.

잠재적으로 쿠키 없는 세션을 설정할 수 있습니다(예:http://msdn.microsoft.com/en-us/library/ms972429.aspx) web.config 파일에서 이를 확인합니다. 쿠키리스가 작동한다면, 거기까지입니다.

답변3

누구든지 이 "버그"를 발견하면 간단한 방법으로 문제를 해결하세요.

  • 가상 애플리케이션 삭제
  • 새 가상 애플리케이션 생성(이전과 동일한 이름을 가질 수 있음)

답변4

고객에게도 동일한 문제가 발생했습니다. 이 경우 애플리케이션을 제거하고 추가해도 문제가 해결되지 않습니다. 요령은 다음과 같습니다. URL에서 밑줄을 바꾸거나 제거하세요!

관련 정보