个人信息被盗注册了支付宝查看银行卡账号账号和办理银行卡现在有欠款要我还

您所在的位置: &
ASP.NET Session丢失问题原因及解决方案
ASP.NET Session丢失问题原因及解决方案
本文分析了ASP.NET Session丢失问题的原因及解决方案。asp的Session是具有进程依赖性的。ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。
正常操作情况下会有ASP.NET Session丢失的情况出现。因为程序是在不停的被操作,排除Session超时的可能。另外,Session超时时间被设定成60分钟,不会这么快就超时的。
现在我就把原因和解决办法写出来。
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' timeout='60'/&
我们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer?SQLServer(大小写敏感) 。默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。
哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:
1、配置文件中processModel标签的memoryLimit属性
2、Global.asax或者Web.config文件被更改
3、Bin文件夹中的Web程序(DLL)被修改
4、杀毒软件扫描了一些.config文件。
更多的信息请参考PRB: Session variables are lost intermittently in ASP.NET applications
ASP.NET Session丢失解决办法:
前面说到的sessionState标签中mode属性可以有三个取值,除了InProc之外,还可以为StateServer、SQLServer。这两种存Session的方法都是进程外的,所以当aspnet_wp.exe重起的时候,不会影响到Session。
现在请将mode设定为StateServer。StateServer是本机的一个服务,可以在系统服务里看到服务名为ASP.NET State Service的服务,默认情况是不启动的。当我们设定mode为StateServer之后,请手工将该服务启动。
这样,我们就能利用本机的StateService来存储Session了,除非电脑重启或者StateService崩掉,否则Session是不会丢的(因Session超时被丢弃是正常的)。
除此之外,我们还可以将Session通过其他电脑的StateService来保存。具体的修改是这样的。同样还在sessionState标签中,有个stateConnectionString='tcpip=127.0.0.1:42424'属性,其中有个ip地址,默认为本机(127.0.0.1),你可以将其改成你所知的运行了StateService服务的电脑IP,这样就可以实现位于不同电脑上的Asp.net程序互通Session了。
如果你有更高的要求,需要在服务期重启时Session也不丢失,可以考虑将mode设定成SQLServer,同样需要修改sqlConnectionString属性。关于使用SQLServer保存Session的操作,请访问这里。
在使用StateServer或者SQLServer存储Session时,所有需要保存到Session的对象除了基本数据类型(默认的数据类型,如int、string等)外,都必须序列化。只需将[Serializable]标签放到要序列化的类前就可以了。
[Serializable]
public class MyClass
具体的序列化相关的知识请参这里。
至此,ASP.NET Session丢失问题解决。
关于asp.net Session丢失问题的总结
asp中Session的工作原理:
asp的Session是具有进程依赖性的。ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。
asp.net Session的实现
asp.net的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做状态维护的,因此用HttpModule做Session是再合适不过了。
bin目录中的文件被改写,asp.net有一种机制,为了保证dll重新编译之后,系统正常运行,它会重新启动一次网站进程,这时就会导致Session丢失,所以如果有access数据库位于bin目录,或者有其他文件被系统改写,就会导致Session丢失
文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失
似乎大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开
Session的时间设置是不是有问题,会不会因为超时造成丢失
IE中的cookie数量限制(每个域20个cookie)可能导致session丢失
使用web garden模式,且使用了InProc mode作为保存session的方式
ASP.NET Session丢失问题解决经验
1. 判断是不是原因1造成的,可以在每次刷新页面的时候,跟踪bin中某个文件的修改时间
2. 做Session读写日志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页面、当前函数、函数中的第几次Session操作,这样找丢失的原因会方便很多
3. 如果允许的话,建议使用state server或sql server保存session,这样不容易丢失
4. 在global.asa中加入代码记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。
5. 如果有些代码中使用客户端脚本,如javascript维护Session状态,就要尝试调试脚本,是不是因为脚本错误引起Session丢失
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
AngularJS是很多Web开发人员在打造单页面应用程序时的首选创建方
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
讲师: 15人学习过讲师: 36人学习过讲师: 15人学习过
2015年两会,“大数据”成为炙手可热的一大关键词,李
很显然,Oracle已正在开发Java 9。Java 9主要的增强内
一个好的工具无论是对于开发者还是整个项目而言,都是
本书是程序员面试宝典系列中的一册,也是上一本《程序员面试宝典》的姊妹书。本书对程序设计面试中Java常见的题型和常用解答技巧
51CTO旗下网站2010年7月 荣获微软MVP称号2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2010年1月 VC/MFC大版内专家分月排行榜第一2004年4月 VC/MFC大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。43804人阅读
[模块](125)
网站发布步骤:
这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。
如有冒犯请联系本人,或删除,或标明出处。
因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。
1、打开你的VS2012网站项目,右键点击项目》菜单中 重新生成一下网站项目;再次点击右键》发布:
2、弹出网站发布设置面板,点击&新建..&,创建新的发布配置文件:
输入你自己定义的配置文件名:
3、点击下一步:在发布方法中选“文件系统”,这样我们可以发布到自己指定的本机文件上。
选择自己指定的文件夹:通过点击下图中右上角红色箭头处创建新的文件夹,自定义命名(我的就写WebSite)。点击打开,进入下一步
4、 在配置中,要选择“Release”——发布模式(Release & 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug&通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序)
5、点击下一步:进入发布前的预览界面
点击发布即可以发布你指定的文件夹中,这里,我发布的是C盘下的WebSite文件夹中。
发布成功后,点开文件夹,所有页面的.cs文件都消失了, 都去哪里了呢?是bin文件夹里面吗?大家猜一猜。
发布好的截图:
6、通过》控制面板》管理工具》启动 ‘Internet信息服务(IIS)管理器’ 进入IIS界面。
右键单击网站》添加网站
7、下面图中,左边红色方框内输入自定义的网站名称(请尽量用英文,这里我就写MyPhotoSite),右边红色箭头处需要点击 ‘选择(E)…’ 进行更改。
大家可以点开下拉列表框根据自己的网站版本进行选择(一般请选择不带有Classic的)。这里我选择的是选择DefaultAppPool,
8、选择 “已发布网站文件夹” 的物理路径。
9、点击下拉列表选择 “自己当前的IP地址”
点击确定:这时我们的网站就还差一步就发布好了,点击网站MyPhotosSite,再点击下图红色箭头处 切换到 “内容视图”。
10、 最后一步:注册IIS服务器。命令:aspnet_regiis -i(请复制),先在程序菜单》VS2012里面》Visual Studio Tools》VS2012开发人员命令提示。右键单击 “VS2012开发人员命令提示”。以管理员身份运行。(如果不是以管理员身份运行,将会提示“权限不足”错误)
运行后,右键粘贴 aspnet_regiis -i 按回车。等待运行大概 1分钟左右提示安装完毕(我的机子慢所以提供1分钟供大家参考,大家不要着急慢慢等待安装完成即可)。
最后,找到自己的网站首页,右键浏览。IE有时会不响应(地址栏出现空白),要多次浏览才会成功。展示一下我们的成果:
说明:上面转载的这部分文章,说明一点大概博主的网站不是MVC4的网站所以在添加网站那步是有出入的
大家可以点开下拉列表框根据自己的网站版本进行选择(一般请选择不带有Classic的)。这里我选择的是选择DefaultAppPool,
而我们是MVC4的 所以选择 ASP.NET v4.0 这项
一般会立即报一个
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary&ASP.NET&Files\root\ca8ed912\d7b1512d\App_global.asax.6rl89b0n.dll'&--&'拒绝访问
1,通常的解决方法:原因是由于系统目录下的Temp目录无相应的权限所致,具体操作如下:C:\Windows\temp--&属性--&安全--&编辑--&添加NETWORK&SERVICE用户的读写权限就可以解决.
2,打开服务器系统c盘,打开window,&右键temp&属性&安全&编辑&添加IIS_IUSRS&用户控制权限添加修改和写入权限即可。这是Windows&Server&2008&R2&标准版&SP1&64位中文版解决办法。(我的是这个问题.这样就解决了,上面的network&service不用也行)
IIS发布步骤:
这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。
如有冒犯请联系本人,或删除,或标明出处。
因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。
网站发布环境:Win7,IIS7.5
网站编写环境:Win7,VS2010,MVC3
1.配置 IIS7.5
& 控制面板——程序——打开或关闭Windows功能——Internet信息服务,按照下图设置 【Internet信息服务】,现在IIS7.5就设置好了。
2.网站发布
2.1. 从VS2010中导出网站
在VS2010中编译好 Solution,然后在菜单栏选择Build——Publish Test(这里Test是Solution名称)弹出如下窗口
网站存放在C:\inetpub\test地方
2.2. 去【Internet信息服务】发布网站
2.2.1 查看 【应用程序池】是否包含ASP.NET v4.0,ASP.NET v4.0 Classic
控制面板(查看方式:小图标)——管理工具(如图2)——Internet 信息服务(IIS)管理器(鼠标双击打开,如图3)——应用程序池(鼠标双击打开),
查看是否有图3中绿色框里的ASP.NET v4.0,ASP.NET v4.0 Classic,如果没有,说明Framework没有完全安装,这样种情况下发布的网站是无法访问的。
解决方法:
& 开始——cmd,在命令管理器里输入以下这样一串字符按Enter键即可(如图1):
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图1 cmd
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图2 管理工具
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图3 Internet 信息服务(IIS)管理器
2.2.2 发布网站
Internet 信息服务(IIS)管理器(鼠标双击打开,如图3)——选择【网站】鼠标右键单击,弹出菜单,选择【添加网站……】弹出图4 窗口
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图4添加网站
经过如上操作,网站就发布成功了
双击新建的网站test,如图5,选择右侧的【重新启动】,然后点击右侧的【浏览网站】下的【浏览192.168.19.19……】,就可以在浏览器中查看发布的网站了
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图5
一些可能会出现的问题:
用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败。
说明:执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败。
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败 怎么解决啊,各位高手?
因为你的程序连接SQLServer的连接字符串是用了windows集成登陆,你可以改成用数据库帐号密码登陆。
你网站发布到IIS 之前 记得修改 配置文件.即 web .config 文件中数据库连接字符串
&connectionStrings& &/connectionStrings&节点中
默认的或你自己一开调试程序添加的是有可能是以前 &.& 代表本机 密码是用系统默认的,发布到IIS后是没办法使用的,所以要改成通用的 一下给出的是一个范例,第一个是系统默认的,用了之后也会出现你这错误, 另一个修过的的范例是正确的
&!--&add name=&TenderSystemContext& connectionString=&Data Source=.;Initial Catalog=DeLiXiTenderSIntegrated Security=TMultipleActiveResultSets=True&
providerName=&System.Data.SqlClient& /&--&
&add name=&TenderSystemContext& connectionString=&Data Source=IT-CHENXIAOPENG\;Initial Catalog=DeLiXiTenderSUser ID=Password=sql+SERVER;MultipleActiveResultSets=True&
providerName=&System.Data.SqlClient& /&
provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程
已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
解决方法如下
首先选中服务器(右键)-&属性-&安全性-&服务器身份验证修改为&SQL SERVER和WINDOWS身份验证模式&
其次展开服务器上的&安全性&-&登陆名-&选中SA登陆帐号(右键)-&状态-&登陆修改为启用
解决步骤:&&&
1、用Windows身份登录Management Studio,右击服务器选择属性,将安全性选项 更改为:SQL Server 和 Windows 身份验证模式。
2、在 安全性-&登录名 中设置sa用户的属性,在状态一栏中有“登录”一项,默认是禁用,改为启用。
3、打开 配置工具-&“SQL Server 外围应用配置器”,运行后,选择“服务和连接的外围应用配置器”。
&& 首先选择 远程连接-&本地连接和远程连接-&仅使用TCP/IP,点击“应用”。
&& 其次选择 服务 先停止SQLEXPRESS服务,再将其重新启动。
以上内容转自:
但并没有解决我的问题。
后来发现。sql server brower服务没启动,重新启动该服务。然后重启sql server服务即可。
如果启动后提示:
用户 'sa' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 用户 'sa' 登录失败。
修改webconfig中相应的代码即可。
&connectionStrings&
&add name=&数据连接名& connectionString=&Data Source=.;Initial Catalog=数据库;pwd=你的密码;&
&& providerName=&System.Data.SqlClient& /&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:998312次
积分:11698
积分:11698
排名:第1006名
原创:242篇
转载:88篇
译文:27篇
评论:145条
(2)(3)(6)(11)(10)(8)(3)(2)(6)(1)(1)(2)(4)(6)(4)(4)(1)(3)(1)(3)(4)(4)(2)(2)(4)(3)(11)(9)(22)(15)(28)(36)(3)(1)(6)(7)(2)(19)(8)(22)(14)(22)(16)(13)

我要回帖

更多关于 银行卡和支付宝账号 的文章

 

随机推荐