繁体   English   中英

ASP.net C#避免两次打开同一窗口

[英]ASP.net c# Avoid open the same window twice

我正在开发一个Web应用程序。 当用户在同一会话中打开同一窗口时,会话存在一个小问题。

例如:现在,如果用户在另一个选项卡浏览器中打开同一窗口并且选择了其他我覆盖的用户,则该用户打开页面用户并选择一个我在会话中存储该对象的用户(Session [“ user”] = user)。会话值(会话“ [“用户”] =用户).....

我在想解决方案:

  • 避免用户可以在同一台PC上打开同一窗口
  • 为用户打开的每个页面创建唯一的ID

你怎么看? Wich是更好的解决方案吗?

感谢您的帮助和最诚挚的问候,

我认为您不能阻止用户在两个不同的标签或浏览器中打开同一页面。 因此,如果需要确保每个窗口在应用程序中都是不同的“会话”,则需要某种唯一的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页面的代码,我在下面提到

Test1.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>

Test1.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

Test2.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>

web.config

<?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>

高温超导

感谢大家的回应。

我读了《 如何在浏览器选项卡中区分会话》一文? 我发现了几种解决方案,可以为每个标签生成唯一的ID。

解决方案是:

我将对其进行审查,并告诉您结果。

如果有人知道另一种解决方案,那就好了!

最好的祝福,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM