我有一个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。
答案 0 :(得分:0)
在使用sessionstate模式时看起来你忽略了cookieless选项。使用mode = Inproc和cookieless = true,asp.net使用url来存储会话ID。如果您使用绝对URL,则asp.net无法附加sessionid。解决方法是将网址转换为相对网址,如下所示:
NavigateUrl = Response.ApplyAppPathModifier(yoururl);
Here是一个讨论,您可能会发现它很有帮助。