阅读本文章前需要读者对以下知识有所了解否则阅读过程中会在相应的内容上遇到不同程度的问题
懂得ASP/ASPNET编程
了解ASP/ASPNET的Session模型
了解ASPNET Web应用程序模型
了解ASPNET Web应用程序配置文件nfig的作用意义及使用方法
了解Internet Information Services(以下简称IIS)的基本使用方法
了解如何在Microsoft SQL Server中创建一个数据库
Session模型简介
Session是什么呢简单来说就是服务器给客户端的一个编号当一台WWW服务器运行时可能有若干个用户浏览正在运正在这台服务器上的网站当每个用户首次与这台WWW服务器建立连接时他就与这个服务器建立了一个Session同时服务器会自动为其分配一个SessionID用以标识这个用户的唯一身份这个SessionID是由WWW服务器随机产生的一个由个字符组成的字符串我们会在下面的实验中见到它的实际样子
这个唯一的SessionID是有很大的实际意义的当一个用户提交了表单时浏览器会将用户的SessionID自动附加在HTTP头信息中(这是浏览器的自动功能用户不会察觉到)当服务器处理完这个表单后将结果返回给SessionID所对应的用户试想如果没有SessionID当有两个用户同时进行注册时服务器怎样才能知道到底是哪个用户提交了哪个表单呢当然SessionID还有很多其他的作用我们会在后面提及到
除了SessionID在每个Session中还包含很多其他信息但是对于编写ASP或ASPNET的程序与来说最有用的还是可以通过访问ASP/ASPNET的内置Session对象为每个用户存储各自的信息例如我们想了解一下访问我们网站的用户浏览了几个页面我们可能在用户可能访问到每个的页面中加入
<%
If Session(PageViewed) = Then
Session(PageViewed) =
Else
Session(PageViewed) = Session(PageViewed) +
End If
%>
可能有些有些读者会问这个看似像是数组的Session()是哪里来的需要我定义吗实际上这个Session对象是具有ASP解释能力的的WWW服务器的内建对象也就是说ASP的系统中已经给你定义好了这个对象你只需要使用就行了其中Session()中的就好像变量名称Session()=$$中的$$就是变量的值了你只需要写上句话在这个用户的每个页面中都可以访问变量中的值了
其实ASP一共内建了个对象有SessionApplicationCookieResponseRequestServer等在其他的服务器端脚本语言如JSPPHP等中也有其类似的对象只是叫法或者使用方法上不太一样
ASP Session的功能的缺陷
目前ASP的开发人员都正在使用Session这一强大的功能但是在他们使用的过程中却发现了ASP Session有以下缺陷
进程依赖性ASP Session状态存于IIS的进程中也就是inetinfoexe这个程序所以当inetinfoexe进程崩溃时这些信息也就丢失另外重起或者关闭IIS服务都会造成信息的丢失
Session状态使用范围的局限性刚一个用户从一个网站访问到另外一个网站时这些Session信息并不会随之迁移过去例如新浪网站的WWW服务器可能不止一个一个用户登录之后要去各个频道浏览但是每个频道都在不同的服务器上如果想在这些WWW服务器共享Session信息怎么办呢
Cookie的依赖性实际上客户端的Session信息是存储与Cookie中的如果客户端完全禁用掉了Cookie功能他也就不能享受到了Session提供的功能了
鑒于ASP Session的以上缺陷微软的设计者们在设计开发 ASPNET Session时进行了相应的改进完全克服了以上缺陷使得ASPNET Session成为了一个更加强大的功能
nfig文件简介
有的ASPNET程序员说nfig文件我从来没有听说过啊可是我写的程序不是也能很正常的运转吗是的你说得没错没有nfig文件程序是可以正常运行的但是如果你做了一个大型的网站需要对整个网站做一些整体配置例如整个网站的页面使用何种语言编写的网站的安全认证模式Session信息存储方式等这时你就需要使用nfig文件了虽然nfig文件中的某些选项是可以通过IIS配置的但是如果在nfig中也有相应的设置就会覆盖掉IIS中的配置而且nfig文件的最大的便利之处就是可以在ASPNET页面中通过调用Systemweb名字空间访问nfig中的设置
nfig有两种分别是服务器配置文件和Web应用程序配置文件他们都名为nfig在这个配置文件中会保存当前IIS服务器中网页的使用哪种语言编写的应用程序安全认证模式Session信息存储方式的一系列信息这些信息是使用XML语法保存的如果想对其编辑使用文本编辑器就行了
其中服务器配置文件会对IIS服务器下所有的站点中的所有应用程序起作用
在NET Framework 中服务器的nfig文件是存在\WinNT\MicrosoftNET\Framework\v中的
而Web应用程序配置文件nfig则保存在各个Web应用程序中例如当前网站的根目录\Inetpub\wwwroot而当前的Web应用程序为MyApplication则Web应用程序根目录就应为\Inetpub\wwwroot\MyApplication如果你的网站有且只有一个Web应用程序一般说来应用程序的根目录就是\Inetpub\wwwroot如果想添加一个Web应用程序在IIS中添加一个具有应用程序起始点的虚拟目录就行了这个目录下的文件及目录将被视为一个Web应用程序但是这样通过IIS添加Web应用程序是不会为你生成nfig文件的如果想创建一个带有nfig文件的Web应用程序需要使用Visual StudioNET新建一个Web应用程序项目
Web应用程序的配置文件nfig是可选的可有可无如果没有每个Web应用程序会使用服务器的nfig配置文件如果有则会覆盖服务器nfig配置文件中相应的值
在ASPNET中nfig修改保存后会自动立刻成效不用再像ASP中的配置文件修改后需要重新启动Web应用程序才能生效了
nfig文件中的Session配置信息
打开某个应用程序的配置文件nfig后我们会发现以下这段
<sessionState
mode=InProc
stateConnectionString=tcpip=:
sqlConnectionString=data source=;Trusted_Connection=yes
cookieless=false
timeout=
/>
这一段就是配置应用程序是如何存储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
/>