单击超链接后会话丢失

时间:2013-08-16 01:25:31

标签: c# asp.net session-state

我有一个gridview,从我的表中获取超链接值,我也附加到超链接的NavigateUrl

<asp:HyperLink ID="LinkSection" runat="server" Text='<%# Eval("SECTION") %>' NavigateUrl='<%# "http://localhost:50686/" + (string)Eval("SECTION") + ".aspx"%>'>

一旦我去部署网站调试恐怖,一切似乎都很有效。我注意到IIS使用INPROC for Sessions不确定Visual Studio在调试时使用了什么,但效果很好。

进入我的webconfig文件并手动设置Session Variables以使用INPROC

<sessionState mode="InProc"
                  cookieless="true"
                  regenerateExpiredSessionId="true"
                  timeout="30" />

我的应用程序不再有效似乎我在点击超链接后丢失了会话值。所以我添加了一些逻辑来重定向回我的登录页面,如果会话值为空,有趣的部分是我点击一个链接,然后它将我发送回登录页面,如果我要回登它有时会工作。 / p>

我正在设置我的会话值

Session["LoggedInUser"] = txtEmail.Text;

并检索它

 cmd.Parameters["@EMAILACCT"].Value = Session["LoggedInUser"];

我没有将它部署到任何服务器场,所以我希望坚持使用会话的最佳性能方法,如果可能,我会阅读INPROC。

1 个答案:

答案 0 :(得分:0)

在使用sessionstate模式时看起来你忽略了cookieless选项。使用mode = Inproc和cookieless = true,asp.net使用url来存储会话ID。如果您使用绝对URL,则asp.net无法附加sessionid。解决方法是将网址转换为相对网址,如下所示:

NavigateUrl = Response.ApplyAppPathModifier(yoururl);

Here是一个讨论,您可能会发现它很有帮助。