• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET实现多域名多网站共享Session值的方法
    ASP.NET实现多域名多网站共享Session值
    1、实现功能:可设置哪些站点可以共享Session值,这样就防止别人利用这个去访问
      要想实现这个功能就必须得把Session值 放入数据库中, 所有我们先在VS命令工具下注册一个
    命名如下:aspnet_regsql.exe -S [数据库服务地址] -E -ssadd 具体格式请参考 /?
    添加成功后我们休要对ASP.NET生成的存储过程进行简单的修改,
    打开ASP.net为我们创建的数据库“ASPState” 找到存储过程“TempGetAppID”
    然后修改存储过程如下:
    复制代码 代码如下:

    USE [ASPState]
    GO
    /****** Object: StoredProcedure [dbo].[TempGetAppID] Script Date: 11/21/2011 16:15:27 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    ALTER PROCEDURE [dbo].[TempGetAppID]
    @appName tAppName,
    @appId int OUTPUT
    AS
    SET @appName = LOWER(@appName)
    SET @appId = NULL
    set @appId=640732509 --这个是我自己测试时写死的 你可以通过系统数据库tempdb中的ASPStateTempApplications查询到站点appId 记住只有当网站的Seeion配置是数据库中 而且保存过一次Session值才能查询的到
    /*
    --SELECT @appId = AppId
    --FROM [tempdb].dbo.ASPStateTempApplications
    --WHERE AppName = @appName
    以上注释办法为原来ASP.net 自动生成的
    */
    IF @appId IS NULL BEGIN
    BEGIN TRAN
    SELECT @appId = AppId
    FROM [tempdb].dbo.ASPStateTempApplications WITH (TABLOCKX)
    WHERE AppName = @appName
    IF @appId IS NULL
    BEGIN
    EXEC GetHashCode @appName, @appId OUTPUT
    INSERT [tempdb].dbo.ASPStateTempApplications
    VALUES
    (@appId, @appName)
    IF @@ERROR = 2627
    BEGIN
    DECLARE @dupApp tAppName
    SELECT @dupApp = RTRIM(AppName)
    FROM [tempdb].dbo.ASPStateTempApplications
    WHERE AppId = @appId
    RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',
    18, 1, @appName, @dupApp)
    END
    END
    COMMIT
    END
    RETURN 0

    这个就可以共享了,但我们还得解决一个问题就是替换客户端的SeeionID ,我们可以添加一个处理程序来利用SessionIDManager类来进行处理,
    实例我就不写了,我值写个替换的方法
    复制代码 代码如下:

    SessionIDManager sessionid = new SessionIDManager();
    bool a;
    bool b;
    sessionid.SaveSessionID(this.Context, "这里是SeeionID", out a, out b);

    最后修改配置文件
    在System.Web节点下添加 sessionState mode="SQLServer" sqlConnectionString="data source=数据连接;user id=sa; password=123456;" >/sessionState>
    ok 一切搞定 你去试试把
    您可能感兴趣的文章:
    • Asp.net中处理一个站点不同Web应用共享Session的问题
    • ASP.NET中在不同的子域中共享Session的具体方法
    上一篇:Asp.net之数据过滤浅析
    下一篇:URL重写及干掉ASP.NET试图状态的实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP.NET实现多域名多网站共享Session值的方法 ASP.NET,实现,多,域名,网站,