asp.net 修改/删除站内目录操作后Session丢失问题
后来经过试验发现,如果删除改变的目录不属于当前项目所在虚拟目录,则Session可用,相反则不可用;调试跟踪中提示的:Session.get_item()……返回null;
后经过研究发现,在虚拟目录删除改变目录会造成Session丢失,以至于失效。而session丢失的实质就是:应用程序重起!
这里有多种解决方案:
1)利用外部进程保存 session
2)利用数据库保存 session
3)用户ID放入cookie,若检测到session为空但cookie存在在重新初始化 session.
4)将要对其进行操作的目录移出asp.net程序外
我这里使用了第一种,操作如下:
1. 首先启动"ASP.NET 状态服务",如果这个服务不启动,后面的更改不会起作用。
2. 在Web.config中修改<sessionState/>配置如以下代码所示
代码如下:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:1314"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="40"
/>
完成上面两点,就算是IIS重启动了,只要客户端的浏览器标示没变化,session就还有效.
3.如果以上设置还是无效的话,需要修改一下注册表:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters]
"AllowRemoteConnection"=dword:00000001000
注意:如果要在Session中存储对象,则要在类上添加[Serializable]属性,即使该对象可序列化。
相关推荐
-
asp.net session丢失的解决方法小结
现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' time
-
Session 失效的原因汇总及解决丢失办法
昨天去GTSC面试,有面试官问我关于Session丢失之后怎么查的问题,说老实话,开发到现在很少碰到这样的情况,唯一想到的就是Session超时,还有就是做Session读写日志,发觉面试官听了之后不是很满意,汗! 不管怎么说,是个学习的好机会,今天抽空查了一下网上关于这些问题的处理方法,总结一下,希望对大家有所帮助. 顺便提一下asp中Session的工作原理: asp的Session是具有进程依赖性的.ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序.所以
-
asp.net 删除项目文件/文件夹IIS重启,Session丢失问题
仔细一看,SSO返回的ticket也不相同,才发现原来IIS重启了,最后解决方案如下: 新建一个类继承IHttpModule 复制代码 代码如下: /// <summary> /// Stops the ASP.NET AppDomain being restarted (which clears /// Session state, Cache etc.) whenever a folder is deleted. /// </summary> public class Stop
-
ASP.NET MVC3网站创建与发布(1)
有时候我们有了网站但是却不知道怎么进行发布,这一节我们演示下怎样使用VS2010创建与发布MVC3建立的网站.使用VS2010创建MVC3.0网站,需要下载MVC3.0的安装包,这个大家可以去网络上下载. 1.项目创建 打开VS2010,选择 文件--新建项目---ASP.NET MVC3 web应用程序,如下图 接着选择Razor视图,如下图,点击确定,这样一个MVC3项目就创建完成了 2.网站发布 右键选择刚创建的项目,弹出一个下拉菜单,选择 "发布"菜单,弹出 &quo
-
Session丢失的解决办法小结
SessionState 的Timeout),其主要原因有三种 一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法. 二:程序内部里有让Session掉失的代码,及服务器内存不足产生的. 三:程序有框架页面和跨域情况. 第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它) 第二种是检查代码有无Session.Abandon()之类的. 第三种是在Window服务中将ASP.NET State Service
-
小心!ASP.NET网站发布时的那些坑
开发工具:VS2010,MVC4.0,SQLSERVER2008 服务器:Windows server 2012,IIS8,SQLSERVER2012 一.发布后,每个页面第一次打开都很卡,50秒或更长,第二次打开就很快了 估计原因:编译速度慢,但在有VS环境的机器上发布没有这么卡 解决办法: 使用高版本的VS,"在发布期间预编译": 使用IIS8的Application Initialization功能 1. 使用VS2017"在发布期间预编译" 发布时遇到一个报
-
.NET发布网站详细步骤
本文章分为三个部分: web网站发布.IIS6 安装方法.ASP.NET v4.0 安装方法 一.web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误 3.如果项目没有错误右击WebUI层发布 4.这样将会看到以下界面 5.在配置文件中新建配置文件 7.在配置文件名称对话框可以输入网站名,例如:test 8.连接的发布方法要选中文件系统 9.选择自己想要将网站放置的盘,然后点击右上角的新建文件夹图标,一定要把项目放
-
asp.net删除文件session丢失
如果你曾经修改了ASP.NET应用程序(dll文件),与修改了bin文件夹或Web.config文件(添加/删除/重命名的文件等),而该网站在运行,你可能已经注意到,这将导致在AppDomain的重新启动.所有的会话状态会丢失和网站再次成功启动,任何登录的用户将被退出(假设你不使用持久Cookie身份验证). 当然,当我们修改了web.config文件,并保存它,迫使一个AppDomain重新启动,这是我们需要的. 我们有时动态创建和删除的文件夹,在ASP.NET 2.0中,文件夹删除将导致一个
-
iis7中session丢失的解决方法小结
问题描述: Windows Server 2008 +IIS +ASP.net +SQLServer2008搭建的内部WEB系统. 用户Session总是丢失,可能是IIS的不稳定性将导致Session频繁丢失. 用的是Session=SQLSEVER,即把Session保存到数据库. 解决方法: 1,在命令行进入如下地址(InstallSqlState.sql文件目录) cd "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 2,运行如下
-
简析ASP.NET网站的创建与发布过程
一.简单网站创建: 1.首先打开VS, 2.文件-->新建-->网站-->ASP.NET(注意语言选择c#)-->对项目进行命名,这里命名为hopeTest: 3.系统会默认生成一个Default.aspx文件,文件内容如下: <%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PU
随机推荐
- AJAX初体验之上手篇
- 后台运行bat定时器程序示例分享
- android中GridView的用法示例
- php遍历目录输出目录及其下的所有文件示例
- javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
- oracle排名函数的使用方法分享
- Win2003主机播放FLV视频的设置图解方法
- IDC服务器托管之技术名词解释什么是服务器
- 页面只有一个text的时候,回车自动submit的解决方法
- 用原生js做个简单的滑动效果的回到顶部
- Mongodb在Linux环境下的部署
- 我想在客户自己开主机时自选mysql或sql数据库
- 伪静态与真静态哪种合适更适合你的站第1/2页
- 在Spring Boot中如何使用log4j记录日志
- java面向对象的六原则一法则小结
- wchar_t,char,string,wstring之间的相互转换
- 深入C#中使用SqlDbType.Xml类型参数的使用详解
- 亲密接触PHP之PHP语法学习笔记1
- Android ToolBar整合实例使用方法详解
- Android自定义PopWindow实现QQ、微信弹出菜单效果