• asp_net中的session


    缓存Cookie是保存在浏览器端的缓存中,如果设置了保存时间,那么cookie就会存到硬盘中去。

           而session是保存在服务器端的。当服务器端产生一个session时,它会对应有一个sessionid,然后把这个sessionid写到一个cookie里面去,随后发到浏览器端。

    浏览器端收到这个保存了sessionid的cookie后,将它写到缓存中去。后面浏览器对服务器的请求过程中,都会带着这个cookie。到了服务器端,用cookie中保存的sessionid找到session信息。于是程序员就可以使用这些信息了。

     

    要注意的是:一次会话就是一次session,所以每次请求页面的时候都会有一个cookie带着一个sessionid往返。

     

    Session常用属性、方法

    属性:SessionID       唯一用户会话标识符

           使用举例:Session.SesstionID

                  TimeOut       用户超时(单位:分钟),默认20分钟

           使用举例:Session.TimeOut=60;

                  Count           当前的这个SessionID里面保存了多少个键值对。(因为sessionID只有一个,它里面保存了多对键值对)

     

    方法:Abandon 用于显示结束对话

           使用举例:Session.Abandon();

     

    Session深入

    (1)、Session分三种:
    1.InProc(进程内)-默认就是这种(保存在本进程中)
    --------------------------------------------------------------------------

    (2)、进程外:可以在IIS或ASPNET服务意外关闭时继续保持状态:

    (保存在localhost:42424这个套接字所指定的机器中)

    2.1StateServer:使用aspnet_state.exe
    2.2修改配置文件:
    <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"/>

    上面的这句话在默认的情况下是没有的。自己把它写到web.config中的<system.web>这一级目录下面。

    localhost改成对方的ip那么session就保存在了对方的机子上面。

    2.3设置是否允许远程使用,位置:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
    注册表中的启用允许远程

    首先打开注册表(Win+R-> regedit)找到:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters(AllowRemoteConnection 设置为1就可以了)

    2.4默认端口号:42424,当然,也可以自己修改,修改也是在注册表中。在AllowRemoteConnectionr 的下面。

    2.5开启服务:我的电脑-管理-服务与应用程序-服务-ASP.NET State Service(ASP.NET 状态服务)

    ---------------------------------------------------------------------------

    (3)、SQLServer(保存在数据库中)
    3.1使用aspnet_regsql.exe运行Session数据库脚本(在C:\Windows\Microsoft.NET\Framework\v4.0.30319这个路径中):
    临时储存区:InstallSqlState.sql & UninstallSqlState.sql(保存在数据库中的临时表中,当数据库服务停止的时候,这张表就没有了)

    对应的sessionstate: <sessionState mode="SQLServer" sqlConnectionString="server=.\sqlexpress;uid=sa;pwd=sa" ></sessionState>


    永久储存区:InstallPersistSqlState.sql & UninstallPersistSqlState.sql(需要使用SQLServerAgent服务-因为调度作业)

    注意:之后配置数据库权限麻烦的话,可以在运行完aspnet_regsql.exe后在数据库中执行你想要使用的sql脚本,就可以不配置权限了。

  • 相关阅读:
    计蒜客 移除数组中的重复元素 (双指针扫描)
    计蒜客 寻找插入位置 (二分查找)
    poj 1007 DNA Sorting
    全排列函数 nyoj 366(next_permutation()函数)
    nyoj 202 红黑树
    nyoj 92 图像有用区域
    nyoj 82 迷宫寻宝(一)
    nyoj 58 最少步数
    nyoj 43 24 Point game
    nyoj 42 一笔画问题
  • 原文地址:https://www.cnblogs.com/La5DotNet/p/2476092.html
Copyright © 2020-2023  润新知