我正在开发一个网络应用程序。当用户在同一个会话中打开同一个窗口时,我对会话有一个小问题。
例如:现在,用户打开页面用户并选择了一个用户会话值 (Session"["user"] = user).....
我正在考虑解决方案:
- 避免用户在同一台PC上打开同一个窗口
- 为用户打开的每个页面创建唯一的 id
你怎么看?哪个是更好的解决方案?
感谢您的帮助和最诚挚的问候,
Thanks all for your responses.
I read the post How to differ sessions in browser-tabs? and I found severals solutions to generate unique id per tab.
The solutions are:
I'm going to review them and I tell you the result.
If somebody knows another solution, allways is wellcome!
Best regards,
我认为您不能阻止用户在两个不同的选项卡或浏览器中打开同一页面。因此,如果您需要确保每个窗口在您的应用程序中都是一个不同的“会话”,您将需要某种唯一 ID,可能存储在隐藏的 HTML 输入中。
在这种情况下,您必须使用无 cookie 会话 - 在 system.web 的 web.config 中
<sessionState mode="InProc" timeout="20" cookieless="UseUri" />
这样做是在 URL 中插入一个会话 ID,这样你就会得到类似 www.host.com/(abc15284dndhjkdm)/app.aspx 的东西。这对于每个标签都是唯一的,因此用户可以在每个标签上拥有唯一的会话。
编辑:-这是我在 web3.adprs.net/test/test1.aspx 显示的 aspx 页面的代码,我在下面提到
测试1.aspx
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="test1.aspx.vb" Inherits="WebApplication4.test1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">
<title></title> </head>
<body>
<form id="form1" runat="server">
<div>
Enter User <asp:TextBox ID="user" runat="server"></asp:TextBox>
<asp:Button ID="go" runat="server" Text="Go" />
</div>
</form>
</body></html>
测试1.aspx.vb
Public Class test1
Inherits System.Web.UI.Page
Private Sub go_Click(sender As Object, e As System.EventArgs) Handles go.Click
Session("user") = user.Text
Response.Redirect("test2.aspx")
End Sub
End Class
测试2.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Your user from session is <%=Session("user").ToString%>
</div>
</form>
</body>
</html>
网络配置
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
<sessionState mode="InProc" timeout="20" cookieless="UseUri" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
高温高压