是否会话超时重置每个请求(Does Session timeout reset on every r

2019-06-24 01:36发布

是否会话超时每个请求重置不管我们是否检查会话变量? 或者,我们应该使用ATLEAST一个会话变量?

难道Ajax请求的原因重置会话超时? 像Update PaneljQuery ajax ,...

谢谢


编辑1)

请问HTTP Get原因重置会话超时?

Answer 1:

是的,它确实。 这不要紧,你是否真正使用Session与否。
不过,如果你使用Ajax调用,你可能会碰到一些问题。
(虽然我还没有遇到过它自己, 在这里的解释)



Answer 2:

是否会话超时每个请求重置不管我们是否检查会话变量?

Session ,如果你继续调用服务器端代码不会过期。 该session超时将被重新对每个请求到服务器。 在随后请求同一网站时,浏览器提供的ASP.NET_SessionId Cookie ,服务器端模块用于访问会话值(如用户信息)。

---------------------------------------------------------------------------------
                     How to detect the Session TimeOut
---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

问题- 2 -不Ajax请求的原因重置会话超时? 像更新面板,jQuery的阿贾克斯,...

问题- 3 -是否HTTP GET原因重置会话超时?

Session的情况下,用户等得太久请求之间将到期。 Session ,如果你继续调用不会过期server side代码。 该session超时将在每个请求服务器重置

Web.Config

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" 
 sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
    cookieless="true" timeout="1" />


Answer 3:

是否会话超时每个请求重置不管我们是否检查会话变量? 或者,我们应该使用ATLEAST一个会话变量?

直到会话变量建立后,为每一个岗位产生回一个新的会话ID。

难道Ajax请求的原因重置会话超时? 像更新面板,jQuery的阿贾克斯,...

这是默认保存在cookie中的会话ID,为每个AJAX和非AJAX请求一起发送。 因此,服务器知道该会话的用户处于活动状态。 不要把我的话。 使用Fiddler或内即F12工具。 你可以看到正在发出的饼干每AJAX GET / POST请求。



Answer 4:

这将取决于很多因素,所以我建议你运行像下面的测试。 这真的需要不到5分钟,以找出是否您的具体情况,您的环境中工作。 这里是我的代码,我用来测试这一点,我使用Telerik控制测试的想法,但我添加了一个不用彷徨,让你想要确切的答案。 aspx页面有

<telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
        </telerik:RadScriptManager>
        <telerik:RadAjaxManager ID="ram" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="btnFake">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="lblAnswer" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <script src="Scripts/jquery-1.4.1-vsdoc.js"></script>
    <script>
        $(document).ready(function () {
            setTimeout(function () { document.location.href = "default.aspx?next"; }, 61000);
            setInterval(function () {
                var divForTimer = $("#divTime");
                var secs = parseInt(divForTimer.html());
                secs = secs + 1;
                $("#divTime").html(secs.toString());
            }, 1000);

        });
        function getPage() {

            $.get("test.aspx", function(result) {
                $("#btnFake").val("Got it");

            });
        }
    </script>
   <asp:Label ID="lblAnswer" runat="server"></asp:Label>
   <Asp:button ID="btnTest" runat="server" Text="Renew" onclick="btnTest_Click" />
   <input type="button" ID="btnAjaxget"  onclick ="getPage()"  value="Ajax get" />
   <asp:Button ID="btnFake" runat="server"  Text ="Fake it" 
        onclick="btnFake_Click"/>
        <div id="divTime">1</div>

在页面的.cs有

protected void Page_Load(object sender, EventArgs e)
        {
            Session.Timeout = 1;
            if (EMSG.CommonFunctions.GetSession("test").Length > 0)
            {
                this.lblAnswer.Text = "Session=" + EMSG.CommonFunctions.GetSession("test");
            }
            else
            {
                this.lblAnswer.Text = "No session";
            }

        }

        protected void btnTest_Click(object sender, EventArgs e)
        {
            Session["test"] = "variable set";
            this.lblAnswer.Text = Session["test"].ToString();
        }

        protected void btnFake_Click(object sender, EventArgs e)
        {
            lblAnswer.Text = "Ajax called.";
        }

---你可以安排上面,以适应您的情况。 但这个想法很简单。 加载页面。 点击“更新”按钮,这将设置你的会话。 等待61秒页面会刷新,会话变量消失了。 再次尝试,但几秒钟后,这个时候点击另外两个按钮中的一个,当页面刷新,你会看到会话变量保持完好,从Ajax调用。 在这种情况下,Ajax调用刷新会话变量。



文章来源: Does Session timeout reset on every request