zoukankan      html  css  js  c++  java
  • .net中SessionState相关配置

    转载至: http://blog.csdn.net/moshengtan/article/details/9050169

    web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer。

    1、off模式

    从字面上就可以看出这个是关闭模式,如果当前页面不需要session的值,为了减少服务器资源,你可以去掉Session的开销。

    <sessionState mode="off">或者页面上

    <%@ Page EnableSessionState="false" %>来关闭Session。

    2、inProc模式(缺省模式)

    它允许“无Cookie”的会话,以及在服务器之外存储
    会话数据。ASP.NET会话状态模块在Web.config文件中像下面这样配置:

    <sessionState mode="InProc" cookieless="false" timeout="20" />

    在这个例子中,mode属性设为InProc(默认值),表明会话状态要由ASP.NET存储到内存中,而且
    不用Cookie来传递会话ID。采取这种方式,不管Cookie还是隐藏表单字段都用不着了。
    所以,即使网页中没有使用表单,也能加入会话。 但是这种方法,应用程序的状态将依赖于 ASP.NET进程, 当IIS进程崩溃或者正常重启时,保存在
    进程中的状态将丢失。

    3、StateServer会话管理mos

    将mode属性设为StateServer,也就是将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行

    的Windows服务来控制这个缓冲区。状态服务全称是“ASP.NET State Service ”(aspnet_state.exe),计算机管理-服务 里面即可看到此服务,启动该服务j

    它由Web.config文件中的stateConnectionString属性来配置。该属性指定了服务所在的服务器,以及要监

    视的端口:
    <sessionState mode="StateServer" 
        stateConnectionString="tcpip=myserver:42424"
        cookieless="false" timeout="20" />
       
    在这个例子中,状态服务在一台名为myserver的机器的42424端口(默认端口)运行。要在服务器上改变

    端口,可编辑HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters注册表项中的Port值。

    如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParametersAllowRemoteConnection 的值,确保服务器接受远程请求。如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。

    显然,使用状态服务的优点在于进程隔离,并可在Web farm(网站群)中共享。 使用这种模式,会话状态的存储将不

    依赖于iis进程的失败或者重启,然而,一旦状态服务中止,所有会话数据都会丢失。换言之,状态服务不

    像SQL Server那样能持久存储数据;它只是将数据存储在内存中。

    <machineKey validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54"

                    decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046"

       validation="SHA1" decryption="AES"/>

    machineKey使用参考: https://msdn.microsoft.com/zh-cn/library/w8h3skw9(v=VS.80).aspx

    4 用SQL Server进行会话管理 

       ASP.NET还允许将会话数据存储到一个数据库服务器中,方法是将mode属性变成SqlServer。 
    在这种情况下,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服

    务器所需的安全凭证)指定的SQL Server中。


    为了用恰当的数据库对象来配置SQL erver,管理员还需要创建ASPState数据库,
    方法是运行WinDirMicrosoft.NetFrameworkVersion文件夹中的InstallSqlState.sql脚本(WinDir是服务

    器的Windows文件夹,而Version是你使用的.NET框架版本的安装文件夹)。


    要配置SQL服务器,可以在命令行中运行SQL Server 提供的命令行工具osql.exe

    osql -S [ server name] -U [user] -P [password] -i InstallSqlState.sql
    例如
    osql -S (local)NetSDK -U sa -P "" -i InstallSqlState.sql

    在这里用户名必须是SQL服务器上的sa帐号,或者具有同等权限的其他帐号。有兴趣的读者可以打开
    这个脚本文件来了解ASP.NET是如何和SQL Server配合实现状态管理的。  


       卸载这些表和存储过程,可以使用UninstallSqlState.sql脚本,使用方法与上面类似。做好必要的数据库准备工作后,将web.config 文件中的sessionstate 元素的mode改为"sqlserver"
    ,并且指定SQL连接字符串。具体如下:

    mode="sqlserver"
    sqlConnectionString="data source=127.0.0.1; userid=sa; password="

    配置好SQL Server后,应用程序代码运行时就和InProc模式没有什么区别。但要注意的是,由于数据不存储在本地内存,所以存储会话状态的对象需要进行序列化和反序列化,以便通过网络传给数据库服务器,以及从数据库服务器传回。这当然会影响性能。通过在数据库中存储会话状态,可分别针对扩展性及可靠性来有效地平衡性能。另外,可以利用SQL Server的集群,使状态存储不依赖于单个的SQL Server, 这样就可以为应用程序提供极大限度的可靠性。

  • 相关阅读:
    Changing Icon File Of Push Button At Runtime In Oracle Forms 6i
    Set Font Properties On Mouse Hover Of Push Button And Text Items At Run time In Oracle Forms
    Change An Item Property Using Set_Item_Property In Oracle Forms
    Calling / Running a report in Oracle forms 10g / 11g
    Change Or Set Report Object Property At Run Time In Oracle Forms Using Set_Report_Object_Property Command
    Refresh / Updating a form screen in Oracle D2k Forms 6i
    Know How And When To Use System.Message_Level To Control Messages In Oracle Forms
    Perform Cut Copy Paste Operations Using Cut_Region Copy_Region Paste_Region Commands In Oracle Forms
    CHECKBOX_CHECKED built-in in Oracle D2k Forms
    Limiting To Select Only 5 Check Boxes Out Of Ten In Oracle Forms
  • 原文地址:https://www.cnblogs.com/jsonzheng/p/6598226.html
Copyright © 2011-2022 走看看