none
问两个问题,高手请指教 RRS feed

  • 问题

  • 1、关于正则表达式的:我想匹配非00结尾的字符串,怎么匹配?
    2、一个C#登陆问题:登陆时我将用户名存储在Session中,但如果一台电脑同时用两个账号登陆网站后,最后登录的账号存储的Session会覆盖第一个账号登陆的Session,怎么让一个网站在同一电脑上同时登陆两个账号呢?
    在大学四年里,我一直认为我是一个人才,直到现在,我才发现我错了,我TM竟是个天才^-^
    2009年5月13日 8:40

答案

  • 楼主,你好

    1.正则表达式:string pattern=@".*00$",你只要用这个表达式判断是否匹配,然后取反,则能满足你的要求了。
    2.session可以不覆盖的。你需要重新启动一个浏览器进程进行登录即可,如果你是以IE作为浏览器,需要重新打开一个IE窗口,不是一个tab。


    Microsoft Online Community Support
    2009年5月14日 2:21
  • 根据我的理解
    如果你使用IE时,你先登录一个帐户,然后,再使用文件菜单下的新建窗口,一个新的用户通过这个新建的窗口来登录,后面登录的用户的
    Session会覆盖前面的用户的Session.但是你不使用新建窗口,而是再次点击计算机上的IE图标,这样启动IE的一个新实例,在这个界面
    再次登录,这样后面登录的用户的Session是不会覆盖前面用户的Session的。
    这种情况在使用带有选项卡的浏览器中也会出现后面的Session覆盖前面的Session的问题。
    下面是我的测试代码,你运行一下就清楚了。











    <script type="text/javascript"> function pageLoad(sender, args) { window.setInterval(function() { $get("result").style.backgroundColor = '#f00'; PageMethods.GetValue(onsucceeded); }, 5000); } function onsucceeded(result) { var div = $get("result"); div.innerHTML = result; div.style.backgroundColor = '#fff'; } </script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true"></asp:ScriptManager> <div id="result"></div> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> </div> </form> </body>
    public partial class test : System.Web.UI.Page
        {
            [System.Web.Services.WebMethod]
            public static string GetValue()
            {
                return HttpContext.Current.Session["Name"] as string;
            }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Session.Add("Name", TextBox1.Text);
                Response.Write(string.Format("Session.SessionID={0},CurrentDateTime={1}", Session.SessionID, Session["Name"] as string));
    
            }
        }
    • 已标记为答案 黏糊 2009年5月15日 7:09
    2009年5月14日 2:40
  • 请注意一个往往被高手们忽略的基础事实


    1 一个IE浏览器进程对于一个网站域具有唯一的 session cookie head
    2 在链接上右建新打开的窗口不是一个新进程    window open的不是一个新进程  control + n 打开的不是一个新进程



    也就是说   一台机器上根本就是可以多session登陆的   前提是你的 Task Manager 里面有具体的两个  IE进程

    除非网站不仅仅用session 判断  而把登陆信息保存在 cookie 其他字段里面  比如 windows live id  和 动网  以及discuz! 



    怎么让一个网站在同一电脑上同时登陆两个账号呢?

    1  在开始菜单打开一个ie
    2  在开始菜单打开另一个ie
    3 打开Taskman  看看里面是否两个 IE 进程  (Iexplore.exe)
    4 分别用两个IE 登陆

    再次强调 对于网站的session cookie head 是存在IE进程中的静态变量表的  不同的进程之间无法访问 


    有效回复过700 撒花
    • 已标记为答案 黏糊 2009年5月15日 7:10
    2009年5月14日 3:45

全部回复

  • 楼主,你好

    1.正则表达式:string pattern=@".*00$",你只要用这个表达式判断是否匹配,然后取反,则能满足你的要求了。
    2.session可以不覆盖的。你需要重新启动一个浏览器进程进行登录即可,如果你是以IE作为浏览器,需要重新打开一个IE窗口,不是一个tab。


    Microsoft Online Community Support
    2009年5月14日 2:21
  • 根据我的理解
    如果你使用IE时,你先登录一个帐户,然后,再使用文件菜单下的新建窗口,一个新的用户通过这个新建的窗口来登录,后面登录的用户的
    Session会覆盖前面的用户的Session.但是你不使用新建窗口,而是再次点击计算机上的IE图标,这样启动IE的一个新实例,在这个界面
    再次登录,这样后面登录的用户的Session是不会覆盖前面用户的Session的。
    这种情况在使用带有选项卡的浏览器中也会出现后面的Session覆盖前面的Session的问题。
    下面是我的测试代码,你运行一下就清楚了。











    <script type="text/javascript"> function pageLoad(sender, args) { window.setInterval(function() { $get("result").style.backgroundColor = '#f00'; PageMethods.GetValue(onsucceeded); }, 5000); } function onsucceeded(result) { var div = $get("result"); div.innerHTML = result; div.style.backgroundColor = '#fff'; } </script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true"></asp:ScriptManager> <div id="result"></div> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> </div> </form> </body>
    public partial class test : System.Web.UI.Page
        {
            [System.Web.Services.WebMethod]
            public static string GetValue()
            {
                return HttpContext.Current.Session["Name"] as string;
            }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Session.Add("Name", TextBox1.Text);
                Response.Write(string.Format("Session.SessionID={0},CurrentDateTime={1}", Session.SessionID, Session["Name"] as string));
    
            }
        }
    • 已标记为答案 黏糊 2009年5月15日 7:09
    2009年5月14日 2:40
  • 请注意一个往往被高手们忽略的基础事实


    1 一个IE浏览器进程对于一个网站域具有唯一的 session cookie head
    2 在链接上右建新打开的窗口不是一个新进程    window open的不是一个新进程  control + n 打开的不是一个新进程



    也就是说   一台机器上根本就是可以多session登陆的   前提是你的 Task Manager 里面有具体的两个  IE进程

    除非网站不仅仅用session 判断  而把登陆信息保存在 cookie 其他字段里面  比如 windows live id  和 动网  以及discuz! 



    怎么让一个网站在同一电脑上同时登陆两个账号呢?

    1  在开始菜单打开一个ie
    2  在开始菜单打开另一个ie
    3 打开Taskman  看看里面是否两个 IE 进程  (Iexplore.exe)
    4 分别用两个IE 登陆

    再次强调 对于网站的session cookie head 是存在IE进程中的静态变量表的  不同的进程之间无法访问 


    有效回复过700 撒花
    • 已标记为答案 黏糊 2009年5月15日 7:10
    2009年5月14日 3:45
  • 你可以打开两个IE窗口,或者使用一个其它的浏览器如chrome / ff 3 等同时登陆。 这样session 就是相互独立的!
    2009年5月14日 4:25
    版主
  • 谢谢,关于第二个问题可能是IE设置哪里有问题,在我电脑上会覆盖Session,可是我在我同事电脑上试了下,他的就没有这种情况,这到底为什么呢?难道还要需要什么设置吗?
    我的电脑是IE8,同事的是IE7,不会是IE8的问题吧?


    在大学四年里,我一直认为我是一个人才,直到现在,我才发现我错了,我TM竟是个天才^-^
    2009年5月15日 7:05
  • 我电脑打开一个IE会出现2个IE进程,打开2个IE会出现3个IE进程,不知道怎么回事


    在大学四年里,我一直认为我是一个人才,直到现在,我才发现我错了,我TM竟是个天才^-^
    2009年5月15日 7:07
  • 请注意一个往往被高手们忽略的基础事实


    1 一个IE浏览器进程对于一个网站域具有唯一的 session cookie head
    2 在链接上右建新打开的窗口不是一个新进程    window open的不是一个新进程  control + n 打开的不是一个新进程



    也就是说   一台机器上根本就是可以多session登陆的   前提是你的 Task Manager 里面有具体的两个  IE进程

    除非网站不仅仅用session 判断  而把登陆信息保存在 cookie 其他字段里面  比如 windows live id  和 动网  以及discuz! 



    怎么让一个网站在同一电脑上同时登陆两个账号呢?

    1  在开始菜单打开一个ie
    2  在开始菜单打开另一个ie
    3 打开Taskman  看看里面是否两个 IE 进程  (Iexplore.exe)
    4 分别用两个IE 登陆

    再次强调 对于网站的session cookie head 是存在IE进程中的静态变量表的  不同的进程之间无法访问 


    有效回复过700 撒花

    IE8仿chrome,开一个Tab,建一个进程。但它可以SessionID是同一个呀。
    2009年5月15日 10:40