对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:42 5653325 (好人也是人。) 等 级: #1楼 得分:0回复于:2008-11-21 09:29:25 那就用cookies 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:c# 中 bool 与 Boolean 什么有什么区别 5653325 (好人也是人。) 等 级: #2楼 得分:0回复于:2008-11-21 09:35:02 或者把session用StateServer模式 而不是默认的InProc模式看看 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:年后写的一点代码 lingdu_hua (看着老实,其实不老实) 等 级: #3楼 得分:0回复于:2008-11-21 09:41:08 引用 1 楼 5653325 的回复: 那就用cookies 现在不可能改成用cookie了,这东西都用好几年了.只不过刚新加一个功能.session用StateServer模式的话运行起来会有问题,这个就更麻烦了.我想找一种在showModalDialog下不丢失SESSION的方法. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:由1,2,3,4,1.1组合小于6的组合一共有多少种,什么算法可以完全遍历出来 lingdu_hua (看着老实,其实不老实) 等 级: #4楼 得分:0回复于:2008-11-21 09:48:22 晕了,刚换成showModelessDialog后,SessionID相同的情况下还会跳到登陆页-_-! 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:【原创+分享】VS2005水晶报表PUSH模式(DataSet)视频教程+源代码工程示例 mengxj85 (漂零) 等 级: #5楼 得分:0回复于:2008-11-21 09:48:28 顶一下,可以考虑用自定义弹出窗口 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:新春送吉祥,两手都要抓,一软一硬:) lingdu_hua (看着老实,其实不老实) 等 级: #6楼 得分:0回复于:2008-11-21 09:49:12 在模态框里重新登陆以后这种情况就消失了.但说不准什么时候就又出现了... 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP criedshy (我已经戒烟很久了) 等 级: #7楼 得分:0回复于:2008-11-21 09:49:56 丢失session是不是因为.Timeout了 设置session.timeout=一个更大的值 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP criedshy (我已经戒烟很久了) 等 级: #8楼 得分:0回复于:2008-11-21 09:50:33 请确定 !你页面开启的循序!! open 代表 window.open modal 代表 window.showModalDialog Y session 不会丢失 N session 会丢失 open/open/open Y /Y/Y modal/modal/modal Y/Y/Y open/modal/open Y/Y/N modal/open/modal Y/N/N Open/modal/modal Y/Y/Y Modal/open/open Y/N/N 你看看 你的页面打开模式 属於那种!!是否是丢失数据去情况 补充: 你这种 情况是 open 一个页面 再modal 在modal 里面提交。。。 modal 里面是不允许提交的。。。 提交就丢失数据 你可以 将 modal 处理后的 值 放到 父窗体 里面去 然后再提交,,, 由父窗体 去提交 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP criedshy (我已经戒烟很久了) 等 级: #9楼 得分:0回复于:2008-11-21 09:52:24 这样处理 c.aspx中 Session就不会丢失了。 文章出处:http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007112/82071.html 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #10楼 得分:0回复于:2008-11-21 09:53:32 引用 5 楼 mengxj85 的回复: 顶一下,可以考虑用自定义弹出窗口 所有的页面(除了模态对话框以外)都被加上了脚本(js文件),一但运行就最大化了-_-!所以这个模态对话框尽量还是不要去掉.否则就没有这个效果了.也想过以DIV的形式代替模态框...但,改动量还是有点大了. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #11楼 得分:0回复于:2008-11-21 09:55:17 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #12楼 得分:0回复于:2008-11-21 09:57:22 引用 9 楼 criedshy 的回复: 从 HTML 模式或无模式对话框可能没有打开同一进程中 InternetExplorer 窗口中打开,因此模式窗口中调用 window.open()方法打开具体页面,可能造成session 丢失.例如:主窗体a.aspx,点击按钮时采用window.showModalDialog,打开弹出窗体b.aspx,b.aspx为模式窗体,然后在b.aspx窗体中再用window.open方式打开窗体c.aspx时,session会丢失。 解决方法: 思路: 调用 a.aspx window 的 open 方法打开 a.aspx 中wi… 我遇到的是最后一种Modal/open/open Y/N/N 你说的这个方法我在问题里已经描述过了啊.当IE7设置为"遇到弹出窗口时以新选项卡方式打开",就会造成用户体验的问题了,我必须关闭模态对话框才可以去打开那个页面. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #13楼 得分:0回复于:2008-11-21 10:00:28 你要非这样做就用url传参过去. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #14楼 得分:0回复于:2008-11-21 10:05:44 引用 13 楼 lovehongyun 的回复: 如果你用 "_blank", session肯定会是新的session的. 你要非这样做就用url传参过去. 我是这样写的,您看下对不对? C# code HyperLink hl = (HyperLink)e.Row.FindControl("hlTitle"); hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+ "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"].ToString() + "&CurrentStep=DisplayMode&Session="+GetCurrentLoginUserName(); 模态框里放的是GridView,用了模板列.最后一个参数将当前登陆的用户名传递过去了.可是还是不行啊. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #15楼 得分:0回复于:2008-11-21 10:08:48 C# code hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+ "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"].ToString() + "&CurrentStep=DisplayMode&ASP.NET_SessionID="+Session.SessionID; 但也不行,跳转到登陆页面后,SessionID和我父页的SessionID是相同的,这说明Session没有对啊,但为什么会跳到登录页呢...想不通. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #16楼 得分:0回复于:2008-11-21 10:31:45 引用 15 楼 lingdu_hua 的回复: 有个朋友告诉我用这种方式 C# codehl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+ "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"].ToString() + "&CurrentStep=DisplayMode&ASP.NET_SessionID="+Session.SessionID;但也不行,跳转到登陆页面后,SessionID和我父页的SessionID是相同的,这说明Session没有对啊,但… 你传sessionid有什么用?如果你要跳转到的那个页面对session做了验证.比如说判断session是否为null,为null就跳到登录页.如果你做了这样的判断那肯定会跳到登录页的.因为你"_blank"后弹出的页面是个新页面.session也是新的. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #17楼 得分:0回复于:2008-11-21 10:35:42 引用 14 楼 lingdu_hua 的回复: 引用 13 楼 lovehongyun 的回复:如果你用 "_blank", session肯定会是新的session的. 你要非这样做就用url传参过去. 我是这样写的,您看下对不对? C# codeHyperLink hl = (HyperLink)e.Row.FindControl("hlTitle"); hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+ "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"]… 传过去后要用Request[""]去取.session的值传过去了.但是新开页面的session还是新的. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #18楼 得分:0回复于:2008-11-21 10:36:18 C# code HyperLink hl = (HyperLink)e.Row.FindControl("hlTitle"); hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+ "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"].ToString() + "&CurrentStep=DisplayMode&Session="+GetCurrentLoginUserName(); 那我按您说的是这么写的,对吗?Session还是会丢 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #19楼 得分:0回复于:2008-11-21 10:38:01 应该对吧.你看一下url上对吗.url对就是对了.先把你DEV_form.aspx页中对session判断为null就跳到登录页面的语句注释了看一下url 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #20楼 得分:0回复于:2008-11-21 10:47:22 引用 19 楼 lovehongyun 的回复: 应该对吧.你看一下url上对吗.url对就是对了. 先把你DEV_form.aspx页中对session判断为null就跳到登录页面的语句注释了看一下url 我没有判断SESSION为空啊.这个功能是在Web.Config里: XML code <!--下面的配置将指定ASP.NET使用FormsAuthenticationModule类--> <authentication mode="Forms"> <forms loginUrl="Login.aspx" protection="All"/> </authentication> <!--站点所有页面都拒绝所有匿名用户--> <authorization> <deny users="?"/> </authorization> 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP fenyuxiao (消逝的风) 等 级: #21楼 得分:0回复于:2008-11-21 10:51:44 这种情况我也遇到过了,后来实在没找到方法,就直接传参数过去,虽然解决了,但不知道有什么更好的办法,期待中! 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #22楼 得分:0回复于:2008-11-21 11:15:30 自己继续顶求解决方案 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP yagebu1983 (帮主) 等 级: #23楼 得分:0回复于:2008-11-21 11:16:27 传参数!! 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #24楼 得分:0回复于:2008-11-21 11:17:36 引用 22 楼 lingdu_hua 的回复: 自己继续顶 求解决方案 哦.用的forms验证啊.登录的时候把 FormsAuthentication.SetAuthCookie(userName, true);第二个参数改成true 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #25楼 得分:0回复于:2008-11-21 11:22:18 C# code FormsAuthentication.SetAuthCookie(userName, true); FormsAuthentication.RedirectFromLoginPage(userName, true); 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #26楼 得分:0回复于:2008-11-21 11:25:38 C# code FormsAuthentication.RedirectFromLoginPage(userName, true); 这个改语第二个参数改成true后,就再链到那个新页面就不会反回登录界面了. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP qinhl99 (林鸿) 等 级: #27楼 得分:0回复于:2008-11-21 11:28:29 net下导致Session失效的一种情况:js教本中使用window.open和window.showModalDialog时需要注意 在项目中碰到过一种情况先用window.open打开1.aspx,1.aspx中用window.showModalDialog打开2.aspx,2.aspx中用window.open打开3.aspx,那么在3.aspx中取不到Session中的值。 于是我先做了一个default.aspx页面,向Session中存入值,在后面的三个页面中,分别去取Session中的值。三个页面的打开方式不一样,共6钟情况,测试结果如下: 打开顺序 第一个页面 第二个页面 第三个页面 open/open/open Y Y Y modal/modal/modal Y Y Y open/modal/open Y Y N modal/open/modal Y N N Open/modal/modal Y Y Y Modal/open/open Y N N Open/modal/open指页面1,2,3的打开方式,用open打开页面1,页面1用modal打开页面2,页面2用open打开页面3。 “Y”表示可以取到Session中存入的值;“N”表示不能取到Session中存入的值。 测试环境win2000,ie6.0+sp1,多数情况下会出现;win2003,ie6.0+sp2,总是出现。 modal打开页面后,在打开的页面再open打开新页面时,在新开的页面总会出现Session丢失的问题,所以,在脚本中使用window.showModalDialog打开页面后慎用window.open打开页面,会导致Session取不到。大家可以测试一下。 深入考虑,是不是modal打开的页面再用open打开另一个页面时,ie认为这是新开了一个线程?总而言之,这是ie的一个bug吧。 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #28楼 得分:0回复于:2008-11-21 11:30:45 C# code hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+ "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"].ToString() + "&CurrentStep=DisplayMode&Session="+GetCurrentLoginUserName(); 那这句还用写吗?项目是用的MemberShip,我不知道里面写没写您那两句话,如果我在登录页写了会对项目造成影响么? 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #29楼 得分:0回复于:2008-11-21 11:39:58 那这句还用写吗? 项目是用的MemberShip,我不知道里面写没写您那两句话,如果我在登录页写了会对项目造成影响么?MemberShip应该也会有FormsAuthentication.RedirectFromLoginPage这样的语句.你查一下你的项目里,应该有的那个语句你要是传就写吧.你用的forms验证,直接HttpContext.Current.User.Identity.Name就能取到用户的. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #30楼 得分:0回复于:2008-11-21 11:49:14 引用 29 楼 lovehongyun 的回复: 那这句还用写吗? 项目是用的MemberShip,我不知道里面写没写您那两句话,如果我在登录页写了会对项目造成影响么? MemberShip应该也会有FormsAuthentication.RedirectFromLoginPage这样的语句.你查一下你的项目里,应该有的 那个语句你要是传就写吧. 你用的forms验证,直接HttpContext.Current.User.Identity.Name就能取到用户的. 非感谢您!我不是用Session传东西,只是因为Form验证的原因导致一丢Session就跳登陆页.很让人头疼.因为这个问题不是每次都出现的,所以我需要反复登录然后测试一下,如果没有问题的话下午就结帖~ 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #31楼 得分:0回复于:2008-11-21 11:53:43 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #32楼 得分:0回复于:2008-11-21 12:49:01 我发现加了那句话以后就会将登录的信息记录到cookie里了吧?也就是原始的Form验证+cookie的机制了. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP fangshw (☆飞梦㊣╬→) 等 级: #33楼 得分:0回复于:2008-11-21 13:15:39 如果楼上各位的回答还不能解决你的问题的话,可以考虑用window.showModalDialog()打开页面传参数方法,或者直接用弹出层的方法来解决问题 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP baby_cz 等 级: #34楼 得分:0回复于:2008-11-21 13:27:35 把SESSION的值一起当作参数传过去行不? 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP wuxiaoqqqq (傲剑无语) 等 级: #35楼 得分:0回复于:2008-11-21 13:45:55 把Session的值做参数传过去吧,模态窗口是有这个问题。 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #36楼 得分:0回复于:2008-11-21 14:14:57 引用 32 楼 lingdu_hua 的回复: 我发现加了那句话以后就会将登录的信息记录到cookie里了吧? 也就是原始的Form验证+cookie的机制了. false:cookie是基于当前浏览器进程的.true:持久 Cookie(跨浏览器会话保存的 Cookie)你通过"_blank"打开的新页面就相当于跨浏览器会话了.所以要把参数改为true 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #37楼 得分:0回复于:2008-11-21 14:41:27 引用 36 楼 lovehongyun 的回复: 引用 32 楼 lingdu_hua 的回复:我发现加了那句话以后就会将登录的信息记录到cookie里了吧? 也就是原始的Form验证+cookie的机制了. false:cookie是基于当前浏览器进程的. true:持久 Cookie(跨浏览器会话保存的 Cookie) 你通过"_blank"打开的新页面就相当于跨浏览器会话了.所以要把参数改为true 设置为true的时候我想最后关闭主界面的时候把这个Cookie清掉,因为我不想下次访问页面的时候不登录而直接访问了...这个该怎么搞呢?参数为true时的这个Cookie时间限制可以改吗? 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #38楼 得分:0回复于:2008-11-21 14:48:02 C# code FormsAuthentication.SignOut(); 进行注销 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lovehongyun (潇湘夜雨) 等 级: #39楼 得分:100回复于:2008-11-21 14:57:23 设置为true的时候我想最后关闭主界面的时候把这个Cookie清掉,因为我不想下次访问页面的时候不登录而直接访问了... 这个该怎么搞呢?参数为true时的这个Cookie时间限制可以改吗? =======你自己试一下.设置true的时候,关闭你的ie.然后再打开.应该还是要重新登录的.FormsAuthentication.RedirectFromLoginPage(userName, true); //只改这一句的为true就好了.其它的不用改. 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP lingdu_hua (看着老实,其实不老实) 等 级: #40楼 得分:0回复于:2008-11-21 14:57:38 太谢谢了,今天算是学到新东西了,以前对验证这块不熟悉,看来关键时候这东西还真起作用了!谢谢!结帖了! 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP afahvbvb (afahvbvb) 等 级: #41楼 得分:0回复于:2008-12-17 13:17:38 mark 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP jjrolddog (jjrolddog) 等 级: #42楼 得分:0回复于:2010-11-11 11:52:15 mark showModalDialog中打开新页面Session丢失 相关文章: 2022-12-23 2021-06-22 2022-12-23 2022-12-23 2021-05-25 2021-07-31 2021-12-31