活着的死人 发表于 2015-1-16 23:37:06

ASP教程之Session利用注重事项

asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。session利用历程内会话形态形式时请思索上面的限定:
利用历程内会话形态形式时,假如aspnet_wp.exe或使用程序域从头启动,则会话形态数据将丧失。这些从头启动一般会鄙人面的情形中产生:
在使用程序的Web.config文件的<processModel>元素中,设置一个招致新历程在前提被满意时启动的属性,比方memoryLimit。
修正Global.asax或Web.config文件。
变动到Web使用程序的Bin目次。
用杀毒软件扫描并修正Global.asax文件、Web.config文件或Web使用程序的Bin目次下的文件。
假如在使用程序的Web.config文件的<processModel>元素中启用了收集园形式,请不要利用历程内会话形态形式。不然将产生随机数据丧失。
我把Access数据库放到in上面往了,招致Session总是生效弄得我焦头烂额,往细心浏览了一下MSDN里的《会话形态》,才发明了这些:

.NETFramework开辟员指南

会话形态
请拜见
ASP.NET形态办理

言语
C#

VisualBasic

全体显现
ASP.NET供应Web使用程序必要的跨哀求形态信息(购物车、数据转动等)基本布局,并带有内置的会话形态功效,使您能够接纳以下操纵:

对从单个扫瞄器客户端到服务器上逻辑使用程序会话的哀求举行主动辨认和分类。
将会话局限的数据存储在服务器上以供跨多个扫瞄器哀求利用。
激发得当的可在使用程序代码中处置的会话保存期办理事务(Session_OnStart、Session_OnEnd等)。
注重Session_OnEnd事务仅撑持历程内会话形态形式。假如您利用形态服务器或SQLServer形式,则不会激发该事务。
假如扫瞄器不在指定的超不时间内从头会见使用程序,则主动开释会话数据。
本主题供应会话形态的概述,先容怎样标识和跟踪举动ASP.NET会话;注释会话形态存储和一样平常布局,并以一个初级代码示例作为总结。

会话形态概述
HTTP是一个无形态的协定,这意味着它不主动唆使一个哀求序列是不是都来自不异的客户端,乃至不唆使单个扫瞄器实例是不是仍活泼地检察某个页或站点。因而,假如没有其他基本布局的匡助,要想天生必要保护某些跨哀求形态信息的Web使用程序,如购物车、数据转动等,便可能会十分坚苦。

ASP.NET供应以下会话撑持:

便于利用的会话形态功效,该功效是ASP开辟职员所熟习的,与其他.NETFrameworkAPI兼容。
牢靠的会话形态功效,能够承受得住Internet信息服务(IIS)从头启动和帮助历程从头启动而不丧失会话数据。
可缩放的会话形态功效,该功效可用于收集场(多盘算机)和收集园(多历程)两种情形,使办理员能够将更多的处置器分派给Web使用程序以进步它的可缩放性。
用于不撑持HTTPCookie的扫瞄器的会话形态功效。
关于中心会话形态计划,其吞吐量相称于(或高于)ASP的吞吐量(当向购物车放进项时50/50读/写,修正会见的最初一页,考证信誉卡具体信息等)。
可是,会话形态不跨Web使用程序界限坚持。假如实行时代一个Web使用程序切换到另外一个使用程序,则会话信息不克不及用于新使用程序。

标识会话
每一个举动的ASP.NET会话都是利用120位的SessionID字符串举行标识和跟踪的,该字符串只包括URL中所同意利用的ASCII字符。SessionID值是利用包管独一性和随机性的算法天生的,个中包管独一性的目标是确保会话不抵触,包管随机性的目标是确保怀有歹意的用户不克不及利用新的SessionID来盘算现有会话的SessionID。

依据设置使用程序设置的体例,经由过程HTTPCookie或嵌套有SessionID字符串的修正的URL跨客户端-服务器哀求与SessionID字符串举行通讯。

会话形态存储
ASP.NET供应一个复杂、易于利用的会话形态模子,您可使用该模子跨多个Web哀求存储恣意数据和工具。它利用基于字典的、内存中的工具援用(这些工具援用存在于IIS历程中)缓存来完成该操纵。利用历程内会话形态形式时请思索上面的限定:

利用历程内会话形态形式时,假如aspnet_wp.exe或使用程序域从头启动,则会话形态数据将丧失。这些从头启动一般会鄙人面的情形中产生:
在使用程序的Web.config文件的<processModel>元素中,设置一个招致新历程在前提被满意时启动的属性,比方memoryLimit。
修正Global.asax或Web.config文件。
变动到Web使用程序的Bin目次。
用杀毒软件扫描并修正Global.asax文件、Web.config文件或Web使用程序的Bin目次下的文件。
假如在使用程序的Web.config文件的<processModel>元素中启用了收集园形式,请不要利用历程内会话形态形式。不然将产生随机数据丧失。
在历程外形式中,.NET形态服务器不是保存举动工具,而是将会话形态存储在内存中。在这类形式中,帮助历程间接与形态服务器对话。在SQL形式中,会话形态存储在SQLServer数据库中,帮助历程间接与SQL对话。ASP.NET帮助历程这时候可以使用该复杂的存储服务,办法是在每一个Web哀求停止时在客户真个Session汇合中(利用.NET序列化服务)序列化并保留一切工具。当客户端从头会见服务器时,相干的ASP.NET帮助历程从形态服务器中以二进制流的情势检索这些工具,将它们反序列化为及时实例,并将它们安排回对哀求处置程序公然的新Session汇合工具。

在SQL形式中,也能够将会话形态设置为在妨碍转移聚集中事情。妨碍转移聚集是两个或更多不异的冗余Web服务器,它们将会话数据存储在一台独自的盘算机上的SQLServer数据库中。有关怎样设置此设置的信息,请拜见设置SQLServer形式。

经由过程无效地将会话数据的存储与使用程序对它的利用分隔,ASP.NET撑持很多功效壮大的计划,而这些计划关于ASP的初期版本是不成用的:

由于用于会话形态的内存不在ASP.NET帮助历程中,以是能够完成从使用程序妨碍的恢复。
由于一切形态与一般帮助历程不存储在一同,以是假如因为会见抵触招致历程妨碍,大概在呈现逝世锁或内存泄露的情形下历程被IIS办理服务强行从头启动,形态也不会丧失。

跨多个帮助历程对使用程序举行分区。
由于一切形态与帮助历程不存储在一同,您能够洁净地跨多个历程对使用程序举行分区。这类分区能够明显地进步多个历程的盘算机上使用程序的可用性和可缩放性。别的,由于它将每一个帮助历程与单个盘算构造联起来,以是ASP.NET可以打消跨处置器锁争用,这是ASP初期版本中次要的可缩放性瓶颈之一。

跨多个收集场盘算机对使用程序举行分区。
由于一切形态与帮助历程不存储在一同,以是您能够跨运转于多个盘算机上的多个帮助历程对使用程序举行分区。我们偶然必要在运转于分歧盘算机上的帮助历程和形态服务间转达形态,偶然必要在运转于不异盘算机上的历程和服务器间转达形态,而这两种转达形态的模子几近是不异的。不论是哪一种情形,每一个收集场只能有一个形态服务器。

会话形态布局
基于ASP.NET的使用程序利用基于事务的实行构造启用多个.NETFramework类模块来介入单个Web哀求的处置。

SessionState模块
.NETFramework经由过程SessionStateModule类(从IHttpModule派生)完成会话形态,该类介入基于.NET的使用程序所吸收的每一个哀求的实行。SessionStateModule卖力天生或取得独一的SessionID字符串,并卖力存储形态数据和从内部形态供应程序检索形态数据。

会话形态汇合
SessionState类公然两个形态汇合:Contents和StaticObjects。Contents汇合公然已间接经由过程代码增加到会话形态汇合的一切变量项。比方:


VisualBasiccodefromwithinapage,ahandler,orGlobal.asax.
Session("Message")="MyMsg"
Session("AppStartTime")=Now


//C#codefromwithinapage,ahandler,orGlobal.asax.
Session["Message"]="MyMsg";
Session["AppStartTime"]=DateTime.Now;

为了与ASP的初期版本兼容,还能够经由过程使用程序工具上的Contents属性会见这些值,以下面的示例所示。


VisualBasiccodefromwithinapage,ahandler,orGlobal.asax.
Session.Contents("Message")="MyMsg"
Session.Contents("AppStartTime")=Now


//C#codefromwithinapage,ahandler,orGlobal.asax.
Session.Contents["Message"]="MyMsg";
Session.Conte</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。

不帅 发表于 2015-1-17 22:55:52

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

莫相离 发表于 2015-1-21 09:50:28

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

只想知道 发表于 2015-1-24 15:22:49

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。

简单生活 发表于 2015-2-1 12:08:12

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

飘飘悠悠 发表于 2015-2-2 11:17:34

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

admin 发表于 2015-2-8 12:41:41

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

爱飞 发表于 2015-2-25 14:18:30

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

深爱那片海 发表于 2015-3-7 21:30:47

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

老尸 发表于 2015-3-15 14:31:19

下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...

金色的骷髅 发表于 2015-3-22 01:24:48

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
页: [1]
查看完整版本: ASP教程之Session利用注重事项