关于开发中session为null的情况

在最近一次c#项目的开发中,当输入一个密码后我们会把这个密码保存在session中,以便后面进行验证。

但是在一次测试中发现在输入密码保存到session后,当跳转到另一页面后这时在进行密码的验证是。此时发现session的值是null

而当再开一个tab页时跳转到输入密码的界面时发现session中确实有password,但是到了下一页面进行验证是session有变为了null。

在上网查了后发现可能是如果sessionState的model是InProc可能由于杀毒软件或者是环境不稳定导致session丢失,但是在项目sessionState采用的SqlServer,所以这种可能性也别排除。最后在无意间发现在执行验证password的方法上加了ConfigureAwait(false),

1)当ConfigureAwait(true),设置为true时代码由同步执行进入异步执行时,当前同步执行的线程上下文信息(比如HttpConext.Current,Thread.CurrentThread.CurrentCulture)就会被捕获并保存至SynchronizationContext中,供异步执行中使用,并且供异步执行完成之后(await之后的代码)的同步执行中使用(虽然await之后是同步执行的,但是发生了线程切换,会在另外一个线程中执行「ASP.NET场景」)

2)当Configurewait(flase),则不进行线程上下文信息的捕获,async方法中与await之后的代码执行时就无法获取await之前的线程的上下文信息,在ASP.NET中最直接的影响就是HttpConext.Current的值为null。

因为在改异步方法上加了ConfigureAwait(false)导致该线程不会获取线程上下文的信息,所以在获取session时也找不到信息。

 

 

关于ConfigureAwait(false)的使用可以看看这篇文章

https://www.cnblogs.com/cmt/p/configure_await_false.html

在微信小程序开发中,可以使用一些方法来存储session值。一种常见的方法是使用微信小程序的内置缓存API(wx.setStorageSync())来存储session值。可以在登录成功后,将session值存储在本地缓存中,然后在后续的请求中从本地缓存中获取并发送到服务端。另一种方法是使用服务器返回的cookie信息来存储session值,可以通过设置请求头中的cookie字段来发送存储在本地的cookie信息。这样,在后续的请求中,服务端会识别这个cookie并验证用户的登录状态。这两种方法都可以实现在微信小程序开发中存储session值的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信小程序开发一键登录 获取session_key和openid实例](https://download.youkuaiyun.com/download/weixin_38603219/13197712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [微信小程序开发之保持用户的session](https://download.youkuaiyun.com/download/weixin_38700409/16210095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [微信小程序开发-保存服务端sessionid的方法](https://download.youkuaiyun.com/download/weixin_38586186/16209369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值