zoukankan      html  css  js  c++  java
  • asp.net 用sqlserver 实现session共享 (100%成功)

    亲爱的朋友, 下载此文档,我想你一定跟我一样,因为session共享问题,一直苦无良策吧? 为此,我试验了很多种方法,都不能成功!后来经常不断尝试,最终发现了原因,终于解决了.

    一,配置原因描述:   

    共享session是因为在公司开发时,WEB发布到服务器上要配置多个站点, 如: www.yd009.com  news.yd009.com product.yd009.com  这几个站点上,都 有登录 信息, 都 会在主站有链接 过来.如果主站登录了,跳到这几个二级域名,也同样可以登录状态.    在做这个之前,我也在网上查找了好多资料,,几乎没有一个是完整的.很是郁闷 ,可能大家都是为了留一手.

    http://www.cnblogs.com/dfsxh/archive/2009/10/09/1579579.html

    http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131976.html

    http://hi.baidu.com/vcty2007/blog/item/ce313460f04d474eebf8f8fb.html

    ===太多啦.没有一个是完整的.

    二,实现配置

        语言:asp.net 开发工具:VS2008 数据库sqlserver 2005

    三,配置步骤

      1,开始运行->cmd->cd   C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(win2003 一般是这个目录)

      2,aspnet_regsql.exe -sstype c -ssadd -d 你的数据库名 -U 用户名 -P 密码 -S 数据库服务地址

      3,修改里面的存储过程

        

     1 set ANSI_NULLS ON
     2 set QUOTED_IDENTIFIER ON
     3 go
     4 
     5 
     6 alter PROCEDURE dbo.TempGetAppID
     7 @appName    tAppName,
     8 @appId      int OUTPUT
     9 AS
    10 
    11 SET @appName = LOWER(@appName)
    12 SET @appId = NULL
    13 
    14 --查询AppName对应的AppId
    15 --次处进行了修改,使每个AppId都是一样.
    16 SELECT top 1 @appId = AppId
    17 FROM [hnAuto].dbo.ASPStateTempApplications
    18 --WHERE AppName = @appName
    19 
    20 --如果没有查询到AppId
    21 IF @appId IS NULL
    22 BEGIN
    23     BEGIN TRAN
    24         --锁定模式查询
    25         SELECT @appId = AppId
    26         --SELECT top 1 @appId = AppId
    27         FROM [hnAuto].dbo.ASPStateTempApplications WITH (TABLOCKX)
    28         WHERE AppName = @appName
    29         
    30         --如果没有查询到AppId
    31         IF @appId IS NULL
    32         BEGIN
    33             --获取AppName的HashCode
    34             EXEC GetHashCode @appName, @appId OUTPUT
    35             
    36             --插入新AppId
    37             INSERT [hnAuto].dbo.ASPStateTempApplications
    38             VALUES
    39             (@appId, @appName)
    40             
    41             IF @@ERROR = 2627 
    42             BEGIN
    43                 DECLARE @dupApp tAppName
    44             
    45                 SELECT @dupApp = RTRIM(AppName)
    46                 FROM [hnAuto].dbo.ASPStateTempApplications 
    47                 WHERE AppId = @appId
    48                 
    49                 RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.', 
    50                             18, 1, @appName, @dupApp)
    51             END
    52         END
    53     COMMIT
    54 END
    55 
    56 RETURN 0 

        以上的过程 ,你可以复制进去运行就可以了.

       四,修改 web.config   在system.web 加入或修改以下项      

    1  <httpCookies domain="news.com" />
    2       <sessionState mode="SQLServer" sqlConnectionString="data source=[Server];initial catalog=[DataBase];user id=[UserName];password=[Password]" allowCustomSqlDatabase="true"  timeout="120"/>

       五,OK,你大功告成了.记得重启一下IIS ,最好把自己本机上的cookie或垃圾项清除一下,这样效果更好.

      好了,我的解说完成了.

  • 相关阅读:
    2019 SDN上机第5次作业
    iOS 多线程
    安装pygame
    五分钟学会ios反编译
    反编译ipa包
    Flutter 混合开发(一)
    iOS开发-block异步实现return
    Mac下Anaconda的安装和使用
    挣值分析
    【PMP】挣值分析
  • 原文地址:https://www.cnblogs.com/zhangwei595806165/p/2949938.html
Copyright © 2011-2022 走看看