首页 > 前端开发 > 正文

web前端开发session C# 页面跳转Session丢失

2023-09-03 13:31:30 | 我爱编程网

前端开发是很多朋友有关注的类型,那么web前端开发session C# 页面跳转Session丢失,我爱编程网为大家带来了相关文章,希望给大家提供参考。

web前端开发session C# 页面跳转Session丢失

web前端全栈开发,该怎么学

web前端全栈开发学习路线:

  1. 第一阶段
    HTML的学习:超文本标记语言(HyperText Mark-up Language 简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏览器将HTML代码解释渲染后呈现给用户。因 此,我们必须掌握HTML的基本结构和常用标记及属性。技术点:HTML 快速入门、文本、图像、链接、表格、列表、表单、框架;类型为:PC端网站布局,WebApp页面布局HTML5。

  2. 第二阶段
    CSS的学习:  CSS是英文Cascading Style Sheets的缩写,叫做层叠样式表,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言其样式是可以复用的,这样就极大地提高了我们开发的速度,降低了维护的成本。技术点:CSS 基础语法、框模型与背景、文本格式化、表格、显示与定位、动画、过渡、2D/3D 转换、CSS 优化以及HTML5新增的元素与属性、 、表单域增强元素、CSS3选择器、 文字字体相关样式、 CSS3位移与变形处理、 CSS3 2D转换与过度动画、 CSS3 3D转换与关键帧动画、 弹性盒模型、 媒体查询 、 响应式设计,至此我们就可以顺利完成“一幢楼房”的建设。还可以对“楼房”进行更深一步的“装修”,并且让它看起来更“豪华”一些。

  3. 第三阶段
    JavaScript、jQuery 的学习:Javascript:基础语法、json、神奇的Array、常用Javascript类、JS的调试技巧;JS Dom:节点的获取、元素的操作、节点创建、事件与冒泡、项目案例;JQuery:隐式迭代、选择器、JQuery如何实现JSDom中的效果、JQuery EasyUI;同时注意:面向对象进阶与 ES5/ES6里面的设计模式(观察者模式等)、变量对象与活动对象、作用域链、闭包以及JavaScript工具库里面各种类库使用DOM库、AJAX库、原型和继承库。

  4. 第四阶段
    HTTP协议、Ajax进阶与后端开发了解: HTTP(s)协议详解、 Ajax进阶、跨域与 Defered、 PHP基础、 MySQL基础、 服务器端组件原理、HTTP请求(GET、POST、PUT、DELETE等)、HTTP响应、Cookie原理、Session原理、Restful协议 、 接口的定义 、Mock数据 、Restful 、前后端联调 、前端安全(XSS,CSRF,JS注入) 前端工程化与模块化应用:Gulp、Webpack 、NPM、Git/SVN、CommonJS 、AMD 、 CMD 、 ES6模块化

  5. 第五阶段
    至此我们就可以用自己的学到的技术开启新世界的大门啦,去做项目和功能开发:Touch端必然需要清楚的点: Canvas 基础知识 、 绘制矩形、圆弧、线段、曲线、渐变与图像、 Canvas 图表绘制案例、 localStorage、sessionStorage 与离线缓存、 animate.css、 Yo/Mui、 touch.js、 zepto.js、 swiper、 iScroll;微信场景: WeUI 、 Swiper animate 在微信场景项目中的使用、 常见的页面布局、 常见的交互与动画;应用 Vue.js开发 WebApp:Vue.js基础、 模块化、 单文件组件、 路由、 与服务器通信、 状态管理、 单元测试、 生产发布

  6. 第六阶段
    Hybrid,ReactNative:创建项目、创建小程序实例与创建、页面框架、组件、API及工具详解;React Native介绍、BS架构程序、异步执行与加载、兼容通用标准和扩展性;混合技术:Cordova/Phone gap、嵌入客户端(iOS、Android)、微信服务号接口(JSSDK) 我爱编程网

web前端开发session C# 页面跳转Session丢失

C# 页面跳转Session丢失

win2003
server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,造成保存在该进程中的session丢失。
因为Session,Application等数据默认保存在运行该Web应用程序的工作者进程中,如果回收工作者进程,则会造成丢失。
解决办法:
修改配置,设置为不定时自动回收该工作者进程,比如设置为当超出占用现有物理内存60%后自动回收
该进程。通过使用默认应用程序池,可以确保多个应用程序间互相隔离,保证由于一个应用程序的崩溃不会影响另外的Web应用程序。还可以使一个独立的应用程序运行在一个指定的用户帐号特权之下。
如果使用StateServer方式或者Sql
Server数据库方式来保存Session,则不受该设置的影响。
可能的原因2:
系统要运行在负载平衡的
Web
场环境中,而系统配置文件web.config中的Session状态却设置为InProc(即在本地存储会话状态),导至在用户访问量大时,Session常经超时的情况。引起这个现象的原因主要是因为用户通过负载平衡IP来访问WEB应用系统,某段时候在某台服务器保存了Session的会话状态,但在其它的WEB前端服务器中却没有保存Session的会话状态,而随着并发量的增大,负载平衡会当作路由随时访问空闲的服务器,结果空闲的服务器并没有之前保存的Session会话状态。
解决办法:
1.当您在负载平衡的
Web
场环境中运行
ASP.NET
Web
应用程序时,一定要使用
SqlServer

StateServer
会话状态模式,在项目中我们基于性能考虑并没有选择SqlServer模式来存储Session状态,而是选择一台SessionStateServer
服务器来用户的Session会话状态。我们要在系统配置文件web.config中设置如下:
<sessionState
mode="StateServer"
cookieless="false"
timeout="240"
stateConnectionString="tcpip=192.168.0.1:42424"
stateNetworkTimeout="14400"
/>
还要添加一项
<machineKey
validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"
decryptionKey="5FC88DFC24EA123C"
validation="SHA1"/>
2.
我们同时还要在SessionStateServer
服务器中启动ASP.NET
State
Service服务,具体设置:控制面板>>管理工具>>服务>>ASP.NET
State
Service,把它设为自动启动即可。
3.
每台前端WEB服务的Microsoft“Internet
信息服务”(IIS)设置
要在
Web
场中的不同
Web
服务器间维护会话状态,Microsoft“Internet
信息服务”(IIS)
配置数据库中
Web
站点的应用程序路径(例如,\LM\W3SVC\2)与
Web
场中所有
Web
服务器必须相同。大小写也必须相同,因为应用程序路径是区分大小写的。在一台
Web
服务器上,承载
ASP.NET
应用程序的
Web
站点的实例
ID
可能是
2(其中应用程序路径是
\LM\W3SVC\2)。在另一台
Web
服务器上,Web
站点的实例
ID
可能是
3(其中应用程序路径是
\LM\W3SVC\3)。因此,Web
场中的
Web
服务器之间的应用程序路径是不同的。我们必须使Web
场Web
站点的实例
ID
相同即可。你可以在IIS中把某一个WEB配置信息保存为一个文件,其他Web
服务器的IIS配置可以来自这一个文件。您如果想知道具体的设置请访问Microsoft
Support网站。

web前端开发session C# 页面跳转Session丢失

服务端session笔记

注:以下内容基于以tomcat作为web服务器

session是http协议无状态问题的常见解决方案之一 ,用户登录成功之后,把用户信息保存到session(默认储存在服务端的内存)。对于浏览器发起的HTTP请求,可以根据session中是否存在用户信息判断用户是否登录,也方便业务逻辑中获取当前会话用户信息。

服务端创建session时,会生成JSESSIONID作为唯一标识,并将一个key为"JSESSIONID"的cookie返回给前端(前提是浏览器支持cookie),之后,根据浏览器发起请求时携带的JSESSIONID判断用户身份。

tomcat的JSESSIONID生成的机制是一个随机数加时间加上jvm的id值,jvm的id值会根据服务器的硬件信息计算得来,因此不同jvm的id值都是唯一的。

当后端显式调用request.getSession()或request.getSession(true)时,会创建session(注意:需要显式调用,spring或tomcat不会自动生成)

request.getSession()有个重载方法request.getSession(boolean create)
create为true表示,若可以根据前端cookie中的JSESSIONID找到对应的session,则返回该session,否则重新创建一个session,并把新的JSESSIONID返回给前端。
create为false表示,若可以根据前端cookie中的JSESSIONID找到对应的session,则返回该session,否则返回null。
request.getSession()等价于request.getSession(true)

session是http协议无状态问题的常见解决方案之一,但在用户量大,或者分布式系统等场景下,该方案有许多弊端。
1.session默认储存在服务端内存,用户量大时占用内存多
2.需要处理session共享,用户在一台服务器登录后,集群内其他机器没有该用户的session,需要用某些方式实现session共享,并保持一致性,即同步修改所有机器的session
3.同样的数据保存在多台服务器,数据冗余
4.如果使用cookie发送JSESSIONID到服务端,则不支持跨域请求
5.如果浏览器cookie被禁用,就需要用其余方式保存JSESSIONID
6.如果session没有持久化,重启服务器后session就没了

修改负载均衡策略为按ip负载(即同一个ip只访问同一台机器),这样就绕开了session共享的问题(默认策略一般是轮询)
弊端
按ip负载策略和轮询策略,本质上是按用户负载和按请求负载,这两种策略的区别在于, 按请求负载更加均衡 ,比如A、B服务器都有20个用户,A服务器的20个用户相比B服务器更加活跃,那么A服务器的压力就更大。

集成spring-session-redis(网上很多教程),先集成redis,然后在启动类加上@EnableRedisHttpSession注解,这样操作session时,会自动把数据持久化到redis集群

tomcat 配置session复制(未做了解)

同时使用token+session,token用于接口鉴权,session用于保存用户信息。
增加一个拦截器,在找不到session时,根据token反解析出用户信息,然后存入session。
(一般公司会有统一的用户中心,提供校验token并返回用户身份的接口)
严格来说,本方案不算是session共享方案,因为不同服务端的session id不一致,每次请求不同服务器,带上来的session id在本服务器找不到,就产生新的session,直到有效期到期才销毁,严重浪费内存

1.最常见的方式: cookie
2.如果cookie被禁止,可以用URL重写技术,把session id拼接到URL中
3.在表单添加隐藏字段,提交表单时把session id传到服务端

先说结论:如果服务器是集群,且没有配置会话保持,同一个浏览器窗口的JSESSIONID就会变化
用户在A服务器登录成功后,A服务器把key为JSESSIONID的cookie返回给用户,然后携带该JSESSIONID请求B服务器,B服务器找不到该JSESSIONID对应的session,就会创建新的session,把新的JSESSIONID返回给用户。

取决于JSESSIONID的保存方式
如果保存在cookie,要看cookie有没有设置有效期,如果没设有效期,重启浏览器cookie就没了,如果设了有效期,重启浏览器cookie还在。
如果使用URL重写或表单隐藏字段的方式,要看JSESSION具体保存在哪

对于单机应用,JSESSIONID可以用于校验接口(类似于token),后端如果能根据JSESSIONID获取到对应session(即request.getSession(false)不为空),说明该请求有效。但是服务器一旦重启,用户登录就失效了,因为session放在内存中。
如果使用token做接口校验,不仅可以适用于分布式应用,后端重启也不会影响用户的登录态。

以上就是我爱编程网为大家带来的web前端开发session C# 页面跳转Session丢失,希望能帮助到大家,了解更多相关信息,敬请关注我爱编程网。

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“web前端开发session C# 页面跳转Session丢失”相关推荐
python可以做界面开发吗
python可以做界面开发吗

怎样用QtCreator编辑运行python脚本我们首先来看看QtCreator能不能编辑运行python脚本。可以看到新建项目的选项里并没有python相关的选项,看了并不能用QtCreator来管理python项目。我们来看看另一个方面,看看QtCreator能不能创建编辑python的相关文件吧。可以看到,有python的相关选项,点击左侧的Python标签,在中间部分可

2024-01-08 11:50:25
请问python后端开发一般需要什么技术?
请问python后端开发一般需要什么技术?

请问python后端开发一般需要什么技术?第一阶段:Python语言基础主要学习Python最基础知识,如Python3、数据类型、字符串、函数、类、文件操作等。阶段课程结束后,学员需要完成Pygame实战飞机大战、2048等项目。第二阶段:Python语言高级主要学习Python库、正则表达式、进程线程、爬虫、遍历以及MySQL数据库。第三阶段:Pythonweb

2024-01-20 06:43:40
如何在spark基础二次开发基于java swing的pc客户端
如何在spark基础二次开发基于java swing的pc客户端

如何在spark基础二次开发基于javaswing的pc客户端packageorg.jivesoftware.spark.ui;importjava.util.ArrayList;importorg.jivesoftware.spark.util.log.Log;importorg.jivesoftware.spark.util.ModelUtil;importorg.j

2024-04-28 06:38:45
学Python的发展前景好吗
学Python的发展前景好吗

学Python的发展前景好吗随着近几年Python的飞速发展,应用范围逐步趋于广泛,后端开发、前端开发、爬虫、金融量化分析、人工智能、自动化运维、自动化运维、大数据,Python都有涉及。Python相对其他编程语言来讲,语法较简单,就算没有任何编程基础,我们也可以学习和掌握Python编程开发,是新时代的宠儿!因此参加Python工程师培训机构的人越来越多。Python有很多吸引程

2023-12-16 03:19:15
Python未来发展前景怎么样?
Python未来发展前景怎么样?

Python未来发展前景怎么样?首先从国家培养人才方向上来讲,国务院发布《新一代人工智能发展规划》,人工智能正式纳入国家发展战略,并且已经有数个省份将Python纳入到高考体系,国家计算机二级考试新增“Python语言程序设计”科目。这些都直接证明了Python的发展前景十分广阔。其次再说一下Python人才的供需情况,随着最近五年Python的持续走热,越来越多的公司开始使用Pyt

2024-01-26 12:39:19
简述Java应用程序的开发流程。(java开发流程)
简述Java应用程序的开发流程。(java开发流程)

简述Java应用程序的开发流程。Java程序在计算机中执行要经历以下几个阶段:(1)使用文字编辑软件(例如记事本、UltraEdit等)或集成开发环境(JCreater、Eclipse、MyEclipse等)编辑Java源文件,其文件扩展名为.java。(2)通过编译方式使.java的文件生成一个同名的.class文件。(3)通过解释方式将.class的字节码文件转变为由0和1组

2024-04-15 17:32:32
Java程序开发步骤(java程序开发步骤包括哪些)
Java程序开发步骤(java程序开发步骤包括哪些)

Java程序开发步骤分为网页和桌面的应用开发网页或者桌面开发流程项目启动1)、项目组成立(公司成员、客户成员)2)、制定项目预期目标3)、制定项目计划周期4)、建立好项目组成员沟通机制2、需求调研1)、创建调研计划、协调调研时间2)、收集客户资料,获取客户需求所有的资料都需要保留一份,资料中存疑的需要及时询问3)、编写需求文档重点

2024-03-28 10:09:14
java如何实现:一个一直在运行的监听程序,每当监听到数据,就把数据发给jsp页面
java如何实现:一个一直在运行的监听程序,每当监听到数据,就把数据发给jsp页面

java如何实现:一个一直在运行的监听程序,每当监听到数据,就把数据发给jsp页面方法1:可以利用ServletContext类的对象application解决,这个属于整个web应用都公用的内部对象。例如在监听器中publicclassGetConnListenerimplementsServletContextListener{//例如这个是要传的数据Stringdata="

2024-03-26 01:02:20