首页 > 编程语言 >由一个业务需求引发的对 ASP.NET 全局变量的调研及结果

由一个业务需求引发的对 ASP.NET 全局变量的调研及结果

时间:2024-11-08 23:08:43浏览次数:4  
标签:存储 ASP 浏览器 C# Chrome Session NET 全局变量

Coding-10

前言

前段时间使用 ASP.NET MVC + Form Auth 做了一个单机小项目,当时对于采用什么方式来存储登录状态有些纠结,通常的做法是使用 Cookie 或者 Session,但是我想有没有更好的方式来存储登录状态呢?于是花了点时间调研了 ASP.NET 的全局变量使用方式,希望能找到更好的方式来存储登录状态。

以下是本次调研过程及总结。

调研过程及总结

Application

测试过程:

  1. LoginController 在 Chrome 浏览器写入 Application["Test"] 的值
  2. 在 Edge 浏览器打开,Application["Test"] 的值依然存在

结论

Application 是全局性的,不太适合存储登录状态

Session

测试过程:

  1. LoginController 在 Chrome 浏览器写入 Session["Test"] 的值
  2. 重新刷新 Chrome 浏览器页面,值存在
  3. 在 Edge 浏览器打开,Session["Test"] 的值不存在

结论

Session 适合存储登录状态,其值存储在服务器端,重启 IIS 或者到时间(默认是20分钟)等方式都会使其丢失

Cookie

测试过程:

  1. LoginController 在 Chrome 浏览器写入 HttpCookie ["Test"] 的值
  2. 重新刷新 Chrome 浏览器,值存在
  3. 在 Edge 浏览器 打开,cookie 不存在

结论

Cookie 适合存储登录状态,其值存储在客户端,不能存储太多信息,安全性没有 Session 好

静态变量

测试过程:

  1. LoginController 在 Chrome 浏览器写入静态变量 GlobalTest.MyLogin 的值
  2. 在 Edge 浏览器打开,GlobalTest.MyLogin 的值依然存在

结论

静态变量是全局性的,不太适合存储登录状态

总结

权衡之下,最终还是选择使用 Session,在单机模式下,Session 相对比较安全可靠。当然还可以把登录状态持久化到本地文件或者数据库中,不过这又是另外一回事了,维护起来也相对比较麻烦。

我是老杨,一个执着于编程乐趣、至今奋斗在一线的 10年+ 资深研发老鸟,是软件项目管理师,也是快乐的程序猿,持续免费分享全栈实用编程技巧、项目管理经验和职场成长心得!欢迎关注老杨的公众号(名称:代码掌控者),更多干货等你来

往期精彩

  1. C# 静态类,高手不想让你知道的 15 个真相
  2. 封装一个 C# 范围判断函数,从此告别重复编写范围判断代码的烦恼
  3. 用 C# Stopwatch 计时,让代码性能飞起来!
  4. 轻装上阵,Visual Studio LocalDB:.NET 程序员的本地数据库神器
  5. 封装一个C#万能基础数据类型转换器,一招解决所有基础类型转换烦恼
  6. 闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
  7. 常用的 4 种 ORM 框架(EF Core,SqlSugar,FreeSql,Dapper)对比总结
  8. C# AutoMapper 10个常用方法总结
  9. C# 7个方法比较两个对象是否相等
  10. C# 去掉字符串最后一个字符的 4 种方法

image

标签:存储,ASP,浏览器,C#,Chrome,Session,NET,全局变量
From: https://www.cnblogs.com/JackyGz/p/18536101

相关文章

  • 初次使用 Jetbrains Rider 编写 C#(.Net) 代码
    前段时间,Jetbrains公司公布了RiderIDE对非商业用途免费,看到很多业界的朋友都用到这个IDE,今天便下载下来使用一下。 1、界面的差异 Rider的界面跟我前段时间学习调试安卓代码的AndroidStudio的界面很像,布局几乎是一样的。使用习惯了VisualStudio的开发们,可能需......
  • NetExec:新型内网/域渗透工具
    免责声明仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。简介:NetExec是一款强大的自动化网络安全评估和漏洞测试工具,作为已停止维护的CrackMapExec(CME)的现代替代品,它已被渗透测试人员和红队成员广泛采用......
  • NETCONF 是由 IETF (Internet Engineering Task Force) 提出的一个标准化协议,目标是
    WindowsNetConf(NetworkConfiguration)是Windows操作系统中用于网络配置管理的框架,通常涉及自动化网络配置、管理网络接口和相关网络设置。它提供了一组API和命令行工具,允许管理员和应用程序配置、查询和管理网络设置。什么:NetConf是Windows中用于网络接口配置的功能,可以......
  • Densenet模型花卉图像分类
    项目源码获取方式见文章末尾!600多个深度学习项目资料,快来加入社群一起学习吧。《------往期经典推荐------》项目名称1.【基于CNN-RNN的影像报告生成】2.【卫星图像道路检测DeepLabV3Plus模型】3.【GAN模型实现二次元头像生成】4.【CNN模型实现mnist手写数字识别】......
  • 11-03 Connect the XPO Profiler to an ASP.NET Core Application(将 XPO 分析器连接到
    11-03ConnecttheXPOProfilertoanASP.NETCoreApplication(将XPO分析器连接到ASP.NETCore应用程序)ThistopicdescribeshowtousetheXPOProfilertoprofileASP.NETCoreapplications.本主题介绍如何使用XPO分析器分析ASP.NET核心应用程序。Connection......
  • DOTNET内存占用优化
    很长时间以来我都在公司dotnet开发的软件上做各种性能优化,包括各种崩溃、线程池资源不足、死锁、以及很多性能慢的代码问题等,类似这种cpu相关问题都比较好查出来。这个过程中经常遇到内存占用过高的问题,也是各种办法都试用了一遍,包括DOTNETGC相关的各种配置,还给docker加内存限制......
  • Neural Networks for Image  Classification Duration
    Lab2:NeuralNetworksforImage ClassificationDuration:2hoursTools:JupyterNotebookIDE:PyCharm==2024.2.3(oranyIDEofyourchoice)Python:3.12Libraries:oPyTorch==2.4.0oTorchVision==0.19.0oMatplotlib==3.9.2LearningObjectives:Unders......
  • 【Linux】为终端命令自定义快件键并弹窗提醒 设置快捷键切换网络代理(Network Proxy)Dis
    【Linux】为终端命令自定义快件键并弹窗提醒设置快捷键切换网络代理(NetworkProxy)Disabled/Manual并弹窗提醒可以自定义快捷键执行终端命令,执行完毕会有弹窗提醒。下面给一个例子,设置快捷键切换网络代理(NetworkProxy)Disabled/Manual并弹窗提醒。适用于Ubuntu系统,为......
  • Performance Improvements in .NET 9 [翻译 by chatglm]
    .NET9中的性能提升StephenToub-MSFT合作伙伴软件工程师目录基准测试设置即时编译(JIT)性能优化编译(PGO)层级0循环边界检查Arm64ARMSVEAVX1.0AVX512向量化分支写屏障对象栈分配内联垃圾回收(GC)虚拟机(VM)Mono本地AOT编译多线程反射数值计算基本类型Big......
  • netcore Swagger 安装备案
    vsnuget内安装Swashbuckle.AspNetCore 在program.cs内加入下边几行基本就可以了//builder.Services.AddSwaggerGen();//<snippet_Services>builder.Services.AddSwaggerGen(options=>{options.SwaggerDoc("v1",newOpenApiInfo{Version=&......