前往顾页
以后地位: 主页 > 收集编程 > .Net实例教程 >

web.config中的session建设详解

时候:2012-01-19 00:58来源:知行网www.zhixing123.cn 编辑:麦田守望者

1、pages 节插手或点窜成以下

<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=*\SQLEXPRESS; Integrated Security=SSPI;"
cookieless="false"
timeout="2000"
/>
2、 <add key="databaseUrl" value="Data Source=NORCO-TANG\SQLEXPRESS;Initial Catalog=OA;Integrated Security=SSPI;"/>
3、启动SQL Server和SQL Server代办代理服,途径中找到阿谁文件:
[system drive]\winnt\Microsoft.NET\Framework\[version]\InstallSqlState.sql的脚本文
翻开某个利用法度的建设文件Web.config后,我们会发明以下这段:

 

< sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20"
/>

  这一段就是建设利用法度是若何存储Session信息的了。我们以下的各种操纵主如果针对这一段建设展开。让我们先看看这一段建设中所包含的内容的意义。sessionState节点的语法是如许的:

 

< sessionState mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
sqlConnectionString="sql connection string"
stateNetworkTimeout="number of seconds"
/>
 

必须有的属性是

属性 选项 描述
mode 设置将Session信息存储到那里
Off 设置为不利用Session服从
InProc 设置为将Session存储在过程内,就是ASP中的存储体例,这是默许值。
StateServer 设置为将Session存储在自力的状况办事中。
SQLServer 设置将Session存储在SQL Server中。

可选的属性是:

属性 选项 描述
cookieless 设置客户端的Session信息存储到那里
ture 利用Cookieless形式
false 利用Cookie形式,这是默许值。
timeout 设置颠末多少分钟后办事器主动放弃Session信息。默许为20分钟
stateConnectionString 设置将Session信息存储在状况办事中时利用的办事器称呼和端标语,比方:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必须的。
sqlConnectionString 设置与SQL Server连接时的连接字符串。比方"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必须的。
stateNetworkTimeout 设置当利用StateServer形式存储Session状况时,颠末多少秒余暇后,断开Web办事器与存储状况信息的办事器的TCP/IP连接的。默许值是10秒钟。

ASP.NET中客户端Session状况的存储
  在我们下面的Session模型简介中,年夜家可以发明Session状况应当存储在两个处所,别离是客户端和办事器端。客户端只卖力保存呼应网站的SessionID,而其他的Session信息则保存在办事器端。在ASP中,客户端的SessionID实际是以Cookie的情势存储的。如果用户在浏览器的设置当挑选了禁用Cookie,那么他也就无法享用Session的便利的地方了,乃至造成不克不及拜候某些网站。为体味决以上问题,在ASP.NET中客户端的Session信息存储体例分为:Cookie和Cookieless两种。

  ASP.NET中,默许状况下,在客户端还是利用Cookie存储Session信息的。如果我们想在客户端利用Cookieless的体例存储Session信息的体例以下:

  找到以后Web利用法度的根目次,翻开Web.Config文件,找到以下段落:

 

< sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20"
/>


  这段话中的cookieless="false"改成:cookieless="true",如许,客户端的Session信息就不再利用Cookie存储了,而是将其经由过程URL存储。封闭以后的IE,翻开一个新IE,从头拜候刚才的Web利用法度,就会看到近似下面的样子:

 

  此中,http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx中黑体标出的就是客户端的Session ID。重视,这段信息是由IIS主动加上的,不会影响之前一般的连接。

ASP.NET中办事器端Session状况的存储
筹办事情

  为了您能更好的体验到尝试征象,您可以建立一个叫做SessionState.aspx的页面,然后把以下这些代码增加到< body>< /body>中。

 


< scriptrunat="server">
Sub Session_Add(sender As Object, e As EventArgs)
  Session("MySession") = text1.Value
  span1.InnerHtml = "Session data updated! < P>Your session contains: < font color=red>" &            Session("MySession").ToString() & "< /font>"
End Sub

Sub CheckSession(sender As Object, eAs EventArgs)
  If (Session("MySession")Is Nothing) Then
    span1.InnerHtml = "NOTHING, SESSION DATA LOST!"
  Else
    span1.InnerHtml = "Your session contains: < font color=red>" &              Session("MySession").ToString() & "< /font>"
End If
End Sub
< /script>
< formrunat="server"id="Form2">
  < inputid="text1"type="text"runat="server"name="text1">
  < inputtype="submit"runat="server"OnServerClick="Session_Add"
      value="Add to Session State" id="Submit1"name="Submit1">
  < inputtype="submit"runat="server"OnServerClick="CheckSession"
      value="View Session State" id="Submit2"name="Submit2">
< /form>
< hrsize="1">
< fontsize="6">< spanid="span1"runat="server" />< /font>


  这个SessionState.aspx的页面可以用来测试在以后的办事器上是不是丧失了Session信息。

将办事器Session信息存储在过程中
  让我们来回到Web.config文件的刚才那段段落中:

 

< sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20"
/>

  当mode的值是InProc时,申明办事器正在利用这类形式。

  这类体例和之前ASP中的形式一样,就是办事器将Session信息存储在IIS过程中。当IIS封闭、重起后,这些信息都会丧失。但是这类形式也有本身最年夜好处,就是机能最高。应为所有的Session信息都存储在了IIS的过程中,所以IIS可以或许很快的拜候到这些信息,这类形式的机能比过程外存储Session信息或是在SQL Server中存储Session信息都要快上很多。这类形式也是ASP.NET的默许体例。

  好了,现在让我们做个实验。翻开刚才的SessionState.aspx页面,随便输入一些字符,使其存储在Session中。然后,让我们让IIS重起。重视,其实不是使以后的站点停止再开端,而是在IIS中本机的机器名的节点上点击鼠标右键,挑选从头启动IIS。(想现在利用NT4时,从头启动IIS必必要从头启动计较机才行,微软真是@#$%^&)前往到SessionState.aspx页面中,查抄刚才的Session信息,发明信息已丧失了。

将办事器Session信息存储在过程外
  起首,让我们来打创办理东西->办事,找到名为:ASP.NET State Service的办事,启动它。实际上,这个办事就是启动一个要保存Session信息的过程。启动这个办过后,你可以从Windows任务办理器->过程中看到一个名为aspnet_state.exe的过程,这个就是我们保存Session信息的过程。

  然后,回到Web.config文件中上述的段落中,将mode的值改成StateServer。保存文件后的从头翻开一个IE,翻开SessionState.aspx页面,保存一些信息到Session中。这时候,让我们重起IIS,再回到SessionState.aspx页面中检察刚才的Session信息,发明没有丧失。

  实际上,这类将Session信息存储在过程外的体例不但指可以将信息存储在本机的过程外,还可以将Session信息存储在其他的办事器的过程中。这时候,不但需求将mode的值改成StateServer,还需求在stateConnectionString中建设呼应的参数。比方你的计较你是192.168.0.1,你想把Session存储在IP为192.168.0.2的计较机的过程中,就需求设置成如许:stateConnectionString="tcpip=192.168.0.2:42424"。当然,不要健忘在192.168.0.2的计较机中装上.NET Framework,并且启动ASP.NET State Services办事。

顶一下
(0)
0%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):C# C#实例教程 c#根本教程 C#源代码 c#技能
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣