Session 相关

本文探讨了ASP.NET中Session丢失并重新出现的问题,分析了IIS6应用程序池设置的影响,并提供了通过StateServer或SQLServer模式存储Session的解决方法。

asp.net session丢失又回来的问题

原文:http://onewww.net/blog/article.asp?id=97

今天遇到asp.net session丢失了,然后又回来了,session里存储的是用户信息,最后导致每次刷新是不同的用户或是未登录状态。很让人吐血的问题。搞了2天没搞出来,最后重写了验证机制,都放在了cookie里了,session不敢用了。今天发现,问题是由于设置iis6的 应用程序池内的性能内的最大web进程数导致的,由于session默认是存放在web进程里的,进程开多了,导致session不能共享,每次刷新又由不同的进程来处理,所以就导致刷新出来不同的用户,前提是在本机登录过这些用户。解决方法可以用stateserver或者用sqlserver模式来存储session。由于google没搜到类似问题,所以这里拿出来说一下这个让我头痛了2天,最后修改了n多页面的问题。

 

Session_End不能执行问题最终解释与调试结果

原文:http://www.xrss.cn/Dev/DotNet/200751613289.Html

首先,我写这篇文章是想让一些朋友少走弯路。我经过两天不断测试得回来的结果,也请朋友尊重我,如果你觉得我写的是错的,请尽量去做测试,做测试完后再来评论。

测试环境:VS2003 Windows2003SP2 IIS6.0 

因为一个Web项目要用到Session_End来善后,在网上找了Session_End的相关文章,可谓众说纷纭。有的说有BUG;有的说是服务器内部机制锁定不能执行;有的说是SP2补丁的问题;有的提了一些观点,对一些,错一些。经过几天反复调试,得出结论如下:

1.Session.SessionID的变化:可以显式的为一个Session赋值,或者在Global.asax文件中添加Session_OnStart事件来解决。(参考了一些文章,证明这些朋友是正确的)

2.Session_End,Session_OnEnd事件过程不执行? 1.首先声明一点,Session_OnEnd事件在Session自动超时后怎样都不执行,既然这样Session.Abandon我也就没测试了,因为既然自动超时不执行那就没什么价值了。 2.Session_End在Session过期或者Abandon后可以马上执行,不执行绝对是因为你的程序有错误,请仔细检查程序,最好的办法是将要执行的过程放在某个测试页面DEBUG。 3.InProc模式

3.Session_End执行时还可以访问Session的值吗?答案是"可以"。反复测试后,感觉Session_End和WinForm关闭窗口的Closing事件差不多,在未完全运行完该过程时,是可以访问值的。有些朋友看Session_End取字面意以为就是End了,这是错误的。

4.Session_End中不能运行哪些方法? Request,Server.MapPath 其它的暂未发现

 

Session属性解释

属性      选项             描述  mode                       设置将Session信息存储到哪里              Off              设置为不使用Session功能              InProc          设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。              StateServer  设置为将Session存储在独立的状态服务中。              SQLServer    设置将Session存储在SQL Server中。  可选的属性是: 属性             选项                             描述  cookieless                                        设置客户端的Session信息存储到哪里                     ture                             使用Cookieless模式                     false                             使用Cookie模式,这是默认值。                     timeout                        设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟                     stateConnectionString    设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。                     sqlConnectionString        设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。                      stateNetworkTimeout    设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。 

<think>嗯,用户问的是关于“mediasession相关dump指令”。首先,我需要确定用户指的是哪个平台或框架的MediaSession。因为不同的系统可能有不同的调试工具和命令。比如Android、Windows或者Web开发中的MediaSession API。 考虑到“dump指令”通常是在命令行或者调试工具中使用的,可能用户是在进行系统级调试,比如Android开发。Android中的MediaSession服务可能有相关的adb命令来获取状态信息。 接下来,我需要回忆Android中的MediaSession相关命令。记得adb shell中有一些am(Activity Manager)和dumpsys命令可以用来查看媒体会话的状态。比如,使用adb shell dumpsys media.session来获取当前活动的媒体会话信息。 另外,用户可能需要知道如何获取MediaSession的服务状态,或者如何转储特定的会话数据。可能还需要考虑权限问题,是否需要root权限才能执行某些命令。 还需要考虑其他可能性,比如在Windows系统中使用PowerShell或特定的调试工具,或者在Web开发中使用浏览器的开发者工具来检查MediaSession的状态。但根据之前的对话历史,用户之前的问题涉及C++,可能更偏向系统级或Android开发。 需要确保提供的命令准确,并且解释每个命令的作用。例如,列举当前活动的媒体会话,查看详细状态,或者模拟媒体按钮事件等。此外,可能需要提醒用户注意设备连接和权限设置,确保命令能够正确执行。 最后,生成相关问题时,应该围绕Android调试、MediaSession API使用、命令行工具以及常见问题排查等方面,帮助用户深入理解如何有效使用这些指令。</think>在Android开发中,与`MediaSession`相关的调试指令主要通过`adb shell`命令实现,以下是关键指令及使用场景: --- ### 1. **查看当前系统中所有MediaSession状态** ```bash adb shell dumpsys media.session ``` - **作用**:输出所有已注册的`MediaSession`信息,包括会话名称、状态(播放/暂停)、播放内容信息(如标题、艺术家)及绑定的客户端。 - **典型输出片段**: ``` Session: media.session.MediaSession@12345 Token: android.media.session.MediaSession$Token@67890 Tag: "MusicPlayer" State: ACTIVE (PlaybackState: code=3, position=123456, speed=1.0) Metadata: { title="Song Title", artist="Artist Name" } ``` --- ### 2. **针对特定包名过滤MediaSession** ```bash adb shell dumpsys media.session --package <PACKAGE_NAME> ``` - **示例**:`adb shell dumpsys media.session --package com.example.music` - **用途**:仅显示指定应用的媒体会话,便于快速定位问题。 --- ### 3. **模拟媒体按键事件(控制MediaSession)** ```bash adb shell input keyevent <KEYCODE> ``` - **常用键值**: - `KEYCODE_MEDIA_PLAY_PAUSE` (85) - `KEYCODE_MEDIA_NEXT` (87) - `KEYCODE_MEDIA_PREVIOUS` (88) - **示例**:`adb shell input keyevent 85` 模拟播放/暂停操作。 --- ### 4. **强制停止媒体会话** ```bash adb shell am broadcast -a android.intent.action.MEDIA_BUTTON \ --extn com.android.media \ --es "control" "stop" ``` - **说明**:通过发送`MEDIA_BUTTON`广播强制停止当前活动的媒体会话。 --- ### 5. **启用MediaSession调试日志** ```bash adb shell setprop log.tag.MediaSession VERBOSE adb logcat -s MediaSession ``` - **用途**:开启详细日志输出,跟踪会话创建、状态更新等流程。 --- ### 注意事项: - **权限要求**:部分命令需设备root权限或系统应用权限。 - **Android版本差异**:`dumpsys media.session`在Android 5.0(API 21)及以上版本支持更完整。 - **结合`dumpsys media.player`**:若涉及底层播放器状态,可同时检查播放器信息。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值