Session 嘛,占一点儿服务器资源,但是总归比 ViewState 和 Cookie 安全点儿,所以还是要用的。

Windows Azure 环境中的 Web 服务器经由负载均衡调度,根本无法保证下一次处理请求的还是不是上一次的那台服务器,所以,直接使用内存的 In-Process Session 就不能用了。

那么怎么办呢?

备选方案

ASP.NET State Service

专门用一台服务器来管理 Session。这个方案 On-Premis 方案里面可以用,Azure 的环境中还没有任何可用的迹象,跳过。

Table Storage

直接用 Azure 里面的存储服务来给你保存 Session。存储服务好便宜,最高级的“读取访问地域冗余存储 (RA-GRS)”对表和队列的报价是 $0.12  1T/月。但是,问题就是慢。所以,跳过。

Azure Caching

内存的缓存服务,速度最快、也最贵。最大的问题是,中国的 Azure 目前还不支持(但云服务提供 In Role Caching)。无奈跳过。

SQL Azure

速度介于 Table Storage 和 Azure Caching 之间,木有官方支持,但是可用。无奈咬牙就用这个了。

操作步骤

其实挺简单的,分三个步骤:

  1. 建立一个 SQL Azure 数据库
  2. 在这个新的空数据库上面跑一个脚本,把所需的表和存储过程都建立起来
  3. 配置 ASP.NET Web 应用的 Web.Config 文件

首先,登录 Windows Azure 控制台,创建一个空的数据库。这里给它起名 ASPState。如果你检索过英文资料,那么你发现有人(文章)会让你运行一段 SQL 脚本创建这个数据库。从应用的角度看,效果是一样的,但是,这个脚本创建的数据库,是不会出现在 Azure 控制台的数据库列表里面的。所以,还是应该直接在 Azure 控制台里面建立这个数据库。

然后,下载本文末尾提供的文件链接,解压后得到 SQL 文件,用 SQL Server Management Studio 打开 Azure 数据库 ASPState 后,运行此脚本即可完成第二步。这个脚本不是我写的,是从 这个地址 下载的。但是原始的下载包是包含创建数据库脚本的,基于上面的原因,我给去掉了,以免引起混乱;同时,也起到异地备份的作用。

打开 ASPState 数据库以及配置 Web.Config 需要连接字符串的参数,可以在 Azure 的数据库面板上面找到,点击“查看 ADO .NET …. 连接字符串”就是:

用 SQL Server Management Studio 连接 Azure 数据库的过程中,你可能会收到一个“IP 地址被防火墙拦截”的错误消息。没关系,切换到 Azure 控制台的数据库管理界面,打开上面的连接字符串对话框,你会看到 Azure 会提示你是否需要允许这个 IP 地址访问数据库,只需要点击提示,将 IP 地址加入允许的访问列表中保存即可。

最后,在你的 Web.Config 的 System.Web 节中添加下面的内容即可(用 % 引用的内容需要按照你的实际情况替换):

好了,下面就可以开始用 Session 了。

附件:下载 配置 ASPState 数据库的脚本文件 (zip 格式)。

特别说明:SQLServer 的 Session 需要手动调用 DeleteExpiredSessions 存储过程(如果你运行上面的 SQL 脚本,这个存储过程是会给你创建好的),因为 SQL Azure 不提供 Agent 服务,所以要手动调用或者用 Azure 提供的“计划调用”服务等手段。这个调用的时机见仁见智,要结合自己应用的实际来安排,这篇短文中就不展开讲太多了。

转载于:https://www.cnblogs.com/jonyzhu/p/3781022.html

ASP.NET 在 Windows Azure 环境中使用基于 SQLServer 的 Session相关推荐

  1. [第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui

    在我上篇文章如何在ASP.Net Core的生产环境中保护swagger ui中,我们讨论了如何使用基本身份验证来保护 swagger ui. 使用 OAuth 2.0 和 OpenIdConnect ...

  2. Windows 10环境中安装Snort+Barnyard2+MySQL

    一.背景 Snort是一款著名的开源入侵检测系统,有着悠久的历史和众多用户.我们通过部署Snort系统来监测异常网络活动并发出报警.Snort的跨平台性能很好,它支持的各种Linux/Unix和Win ...

  3. 在中国Windows Azure服务中创建应用程序的一些不同之处

    Azure 中的托管服务由一个应用程序(用于在托管服务中运行)和 XML 配置文件(定义托管服务的运行方式)组成.托管服务同时使用服务定义文件 (.csdef) 和配置文件 (.cscfg).有关详细 ...

  4. 如何在 Windows 恢复环境中使用 Bootrec.exe 工具解决和修复 Windows Vista 中的启动问题

    简介 <script type="text/javascript">loadTOCNode(1, 'summary');</script> 可以在 Wind ...

  5. CrowdRec:众包环境中,基于信任感知的工人推荐

    引自 Ye B , Wang Y .CrowdRec: Trust-Aware Worker Recommendation in Crowdsourcing Environments[C]//2016 ...

  6. asp.net faq: 在html文件中,用js获取session

    原以为很简单,事实上的确简单.但还是碰到了一个在做之前没有考虑到的问题:ajax的缓存问题.所以看似容易的问题还是要严谨对待,这就是程序员该有的品质吧. 话不多说,言规正转,下面是运行时的截图 点这里 ...

  7. 在Windows Azure公有云环境部署企业应用

    作者 王枫 发布于 2014年4月5日 企业内部应用转换为在线服务 Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运 ...

  8. Windows Azure 虚拟网络中虚拟机的网络隔离选项

     最近我们发布了一份<Windows网络安全白皮书>(单击此处下载),文中深入说明了客户可以如何利用该平台的本地功能,为他们的信息资产提供最好的保护. 由首席顾问Walter Myer ...

  9. Windows Azure Azure 简介

    平台介绍 Windows Azure作为一个微软公有云平台,被寄予了厚望. 可以说Windows Azure与Windows RT一样是微软战略转型的重点. 2012年9月微软与中国本土的电信服务提供 ...

最新文章

  1. 使用C++实现一套简单的状态机模型——实例
  2. golang 切片的三种简单使用方式及区别
  3. 在linux中输入locate出现locate: can not stat ()的错误
  4. 机器人学一些概念2——四元数,D-H 参数
  5. 为什么要避免不可重复读_浅谈游戏的耐玩性-玩家为什么要重复打开你的游戏?...
  6. Linux三剑客正则表达式常用字符汇总
  7. 2019年7月19日星期五(交叉编译工具)
  8. Atitit.android webview h5运行环境总结
  9. 程序员如何写一份打动面试官的简历?这些坑你必须注意了!
  10. 橡皮擦的英语_英语单词这样写,老师想扣卷面分都难!(建议收藏学习)
  11. 基于Arduino、STM32进行红外遥控信号接收
  12. DevOps-2:持续集成工具Jenkins构建.Net项目
  13. 进行拨测的主要目的都有哪些?
  14. openwrt和srun的两三事
  15. 比较全面的log4j配置
  16. 电子签名第三方服务平台,如何保障电子合同安全性的?
  17. 彻底搞懂隐式类型转换
  18. NUC972触摸屏驱动移植过程分析(二)
  19. python中的计时模块:time.time()
  20. 美设计出激光动力太空电梯 成功爬升900米

热门文章

  1. 循环函数:while循环和for循环及函数定义
  2. [动态规划] 区间DP
  3. 吴恩达机器学习笔记(七)神经网络:代价函数
  4. 3. MySQL之PyMySQL的安装使用
  5. 最新网狐旗舰版整理、编译和搭建教程
  6. BGP路由黑洞及IBGP全连接
  7. CISCO ASA思科防火墙常用命令
  8. php自写api文档生成工具
  9. HTML中6种空格标记
  10. 【owt-server】 只sync webrtc-m79并构建