尝试使用Azure Redis Cache来管理ASP.NET的会话处理
0. 引言
在前一篇《整理ASP.NET的会话管理方法》中,我们总结了关于ASP.NET会话管理的方法。这一次,我们将整理使用Azure Redis Cache作为自定义会话管理的变体的步骤。
版本信息
1. Azure Redis Cache 是什么
Redis Cache是一个开源的NoSQL数据库。虽然这篇文章有些旧,但这个解释很容易理解⇒”Redis,它的速度太惊人了”。Azure Redis Cache是以Redis Cache为基础的Azure服务。
2. 亲自尝试使用一下
我会按照步骤说明如何启用Azure Redis缓存并在应用程序中使用。
创建一个新的Azure Redis缓存
在Azure门户上,我将开始使用Azure Redis缓存服务。Redis缓存位于”数据+存储”部分。

※DNS名称和资源组已省略,请适当输入。
切り替えることができるようになります。
-
- host:ホスト名
-
- port:ポート番号(デフォルトSSLが有効になっているため、6380)
- accessKey:アクセスキー
请获取。将在后续的设置中使用。
创建一个ASP.NET MVC应用程序。
在Visual Studio中,创建一个新的ASP.NET MVC应用程序。
安装RedisSessionProvider
请在刚刚创建的应用程序中安装用于 Azure Redis Cache 的会话提供程序。
请使用NuGet来下载dll并将其添加到引用中,并在Web.config中添加示例代码。
右键点击项目,选择“NuGet 包管理器”可以使用GUI来安装包。
过滤使用“Microsoft.Web.RedisSessionProvider”。

在Web.config文件中添加定义
将在2-1得到的定义应用于Web.config文件中。
<system.web>
...
<sessionState mode="Custom" customProvider="MySessionStateStore">
<providers>
<add name="MySessionStateStore"
type="Microsoft.Web.Redis.RedisSessionStateProvider"
host="XXXXXXX.redis.cache.windows.net"
port="6380"
accessKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ssl="true" />
</providers>
</sessionState>
</system.web>
编写用于确认操作的代码。
在確認動作用的代碼中,我們將記錄訪問索引頁面時的時間到會話中,並在關於頁面中從會話中恢復它。我們將使用「時間」作為鍵將數據存儲到會話中。
public class HomeController : Controller
{
public ActionResult Index()
{
Session["time"] = DateTime.Now;
return View();
}
public ActionResult About()
{
ViewBag.Oldtime = Session["time"];
ViewBag.Now = DateTime.Now;
return View();
}
}
结果将在关于页面上显示。
@{
ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
<p>
Indexページを開いた日時 @ViewBag.Oldtime
</p>
<p>
このページを開いた日時 @ViewBag.Now
</p>
3. 运行结果
时间已在关于页面中得以保存并恢复!

使用Redis Desktop Manager直接访问Redis以确认是否真正使用了Azure Redis Cache。(参考使用Redis Desktop Manager)

我确认了时间作为键名存储了值!顺便说一下,上面的RDM结果是在访问两个浏览器后截取的屏幕截图。因此可以知道会话信息被储存了两个。
4. 最后、总结
有一個可用性高且方便的會話伺服器是很方便的呢。如果有這個選擇的話,為什麼還要選擇使用SQL Server作為會話管理呢?
参考呢
山田祥寛先生所著の「ASP.NET MVC5実際のプログラミング」
由于书籍的示例是 Azure Redis Cache 的预发布版,因此本文将针对最新版本进行编写。