【asp精品源码栏目提醒】:网学会员鉴于大家对asp精品源码十分关注,论文会员在此为大家搜集整理了“nginx实现多站点共享SESSION - 其它资料”一文,供大家参考学习
资源分享 编程语言 w e b 前端 w e b 服务器 操作系统 数据库应用柳明的博客资源在于分享,技术在于交流 0 上午好 2013年3月21日 星期四 手机充值 手机号: 归属地: 运营商、地区 面 值: 100元 50元 其他 30元 售 价: 98元-99.6元现在的位置: 首页 编程语言 asp.net 正文RSS小 中 大上篇 下篇nginx实现多站点共享SESSION2012年11月16日 asp.net nginx web服务器 编程语言 3944字 共 暂无评论 被围观 1152 viewsnginx 负载均衡,多站点共享Session多站点共享Session常见的作法有: 使用.net自动的状态服务(Asp.net State Service) 使用.net的Session数据库; 使用Memcached。
使用Cookie方式实现多个站点间的共享(这种方式只限于几个站点都在同一域名的情况下);这里我们就 演练一下 以数据库的形来存储Session,来实现多站点共享Session。
首先我们 建好一下站点,如下图:Default.aspx其中 有二个Button ,SetSession 主要是用于给一个 Session 赋值(如:SessionShareValue “abcd”) ,GetSession 主要就是获得 一个 Session 值。
具体代码如下:代码部分就这么多就行了…下面就是要配置一下 Web.config了 , 其实主要就是在 这个节点中 增加 machineKey 及 sessionState 这两个节点,1.增加machineKey 主要作用是:“按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。
”也就是说Asp.Net的很多加密,都是依赖于machineKey里面 的值,例如Forms 身份验证 Cookie、ViewState的加密。
默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均 衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和 ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。
“ ,具体可以查一下其它资料。
2.增加 sessionState 主要是让 Session 保存在数据库中。
具体配置如下:网站部分 这样就好了。
。
。
下面就是要配置据库了…..数据库配置:使用aspnet_regsql.exe工具ASP.NET 2.0版本后微软提供了aspnet_regsql.exe工具可以方便的配置Session数据库.该工具位于 Web 服务器上的系统根目录Microsoft.NETFramework版本号文件夹中.使用举例:aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype p-S参数:表示数据库实例名称. 可以用.表示本机.-U和-P参数:表示用户名和密码.-E参数:可以再-U –P 与 -E中选择一组. –E表示以当前系统用户通过windows身份验证登录数据库 -U -P则是使用SqlServer用户登录数据库.-ssadd / –ssremove 参数:-ssadd表示是添加Session数据库 -ssremove表示移除Session数据库.sstype 参数说明:t 将会话数据存储到 SQL Server tempdb 数据库中。
这是默认设置。
如果将会话 数据存储到 tempdb 数据库中,则在重新启动 SQL Server 时将丢失会话数据。
p 将会话数据存储到 ASPState 数据库中,而不是存储到 tempdb 数据库中。
c 将会话数据存储到自定义数据库中。
如果指定 c 选项,则还必须使用 -d 选项 包括自定义数据库的名称。
我的设置是:aspnet_regsql.exe -S . - E -d AWBUISession -ssadd -sstype c好了。
基本的 我们就已经搞定了。
。
现在 我们分别把我们刚建的一个网站 部署 到 IIS 中。
不过我们既然要负载。
至少也的部署两份。
我们把 其中一个 服务器中的 defaut.aspx 中 “服务器 1” 改成 “服务器 2” ,这样做的主要目地是 做一下 区别!具体如下:两个网站的 URL分别是: server 1:127.0.0.1:8081server 2:127.0.0.1:8080OK。
下面我们就是 配置 Nignx了。
首先 在 nginxconf 配置 文件中找到 nginx.conf 这个文件 ,就记事本打开,做如上的 设置:OK。
nginx 这样配置 就算OK 了。
我们启动一下 nginx ..在浏览器中 输入我们 在 nginx 中配置的 URL 如:127.0.0.1:8090我们会看到 服务器 1 已经开始为我们服务了,我们再点一下 “SetSession”来设置一下一个 会话值,我们会看到 服务器 2 开始 工作。
这时我们再点一下 “GetSesion”看一下 刚才在 服务器 1 设置 的会话值,结果如下 :出现这种情况 ,主要就是在数据库中存储 一个会话时 没有做到 服务器1 和服务2的Session 共享,主要是 在ASPStateTempSessions 这个表中的 一个SessionID 其中的SessionId包括两个部分:网站生成的24位SessionID及8位AppName对于不同的站点,其 AppName不同,在能够在不同站点下使24位SessionID相同的情况下,要保证经过组合加上AppName后的SessionID相同,可以通 过修改存储过程TempGetAppID,使其得到的SessionID与AppName无关,修改TempGetAppID如下:ALTER PROCEDURE dbo.TempGetAppID appName tAppName appId int OUTPUT AS SET appName Test --LOWERappName 修改这里,使多个站点的APPname 为一个固定值。
SET appId NULL SELECT appId AppId FROM AWBUISession.dbo.ASPStateTempApplications WHERE AppName appName IF appId IS NULL BEGIN BEGIN TRAN SELECT appId AppId FROM AWBUISession.dbo.ASPStateTempApplications WITH TABLOCKX WHERE AppName appName IF appId IS NULL BEGIN EXEC GetHashCode appName appId OUTPUT INSERT AWBUISession.dbo.ASPStateTempApplications VALUES appId appName IF ERROR 2627 BEGIN DECLARE dupApp tAppName SELECT dupApp RTRIMAppName FROM AWBUISession.dbo.ASPStateTempApplications WHERE AppId appId RAISERRORSQL session state fatal error: hash-code collision between applications s and s. Please rename the 1stapplication to resolve the problem. 18 1 appName dupApp END END COMMIT END RETURN 0经过以上修改之后,下面要实现多个站点共用同一个SessionID.重启一下各站点。
再在浏览一下网站点 “SetSession”再点:“GetSession”这样 我们就看到 服务器2 给出了我们 刚才在 服务器 1 中设置 的会话值了。
我们 再点:“GetSession”,可以看到 服务器1 和服务器 2 返回的是相同的结果,达到了 “多站点共享Session”附加一点: Session 过期删除,主要是 在 SQL server 代理中的 作业完成。
具体的可以,查一下其它相关资料. 0您可能也喜欢:asp.netc操作 asp.net实现单点登 asp.net生成验证码 asp.net清除与禁用 nginx源码分析之事 nginx性能改进json数据的方法 陆 插件 页面缓存的方法 件机制 (一) 无觅 0 返回作者: 柳明 该日志由 柳明 于125 天前发表在asp.net nginx web服务器 编程语言分类下 转载请注明: nginx实现多站点共享SESSION 柳明的博客 复制链接 关键字: asp.net c nginx【上篇】web.config与IIS配置优化【下篇】C之汉字转换为拼音您可能还会对这些文章感兴趣! 1. asp.netc操作json数据的方法 2. asp.net怎样实现文件下载? 3. asp.net清除与禁用页面缓存的方法 4. windows下配置nginx开机自动启动 5. C时间操作大全 6. web开发文件上传组件之uploadify 7. C语言快速查找 8. C语言中rand函数的使用给我留言留言无头像 昵称 邮
上一篇:
学生成绩管理系统英文翻译
下一篇:
餐饮管理系统