標籤:store nbsp target view memcache 儲存 asp image 代碼
上一篇文章介紹了VMWare12虛擬機器、Linux(CentOS7)系統安裝、部署Nginx1.6.3代理服務做負載平衡。接下來介紹通過Nginx將請求分發到各web應用處理服務。
一、Web應用開發
1、asp.net mvc5開發
(1)建立一個MVC5工程,建立一個Controller,在Index方法實現將目前時間儲存到Session["mysession"],並寫Cookies["mycookies"]儲存主機名稱和目前時間。
123456789101112131415 |
public ActionResult Index() { if ( this .HttpContext.Session[ "mysession" ] == null ) { this .HttpContext.Session[ "mysession" ] = DateTime.Now.ToString( "yyyy-MM-dd hh:mm:ss" ); } this .HttpContext.Response.Cookies.Add( new HttpCookie( "mycookies" ) { Expires = DateTime.Now.AddDays(1), Value = HttpContext.Server.MachineName + "||" + DateTime.Now.ToString() }); return View(); } |
(2)在Controller中新增第二個方法GetSession,顯示Session和Cookies的值。
123456789101112131415 |
public ActionResult GetSession() { if ( this .HttpContext.Session[ "mysession" ] != null ) { ViewBag.DD = this .HttpContext.Session[ "mysession" ].ToString(); ViewBag.SCode = this .HttpContext.Session[ "mysession" ].GetHashCode().ToString(); ViewBag.SID = this .HttpContext.Session.SessionID; } ViewBag.CVAL = System.Web.HttpContext.Current.Request.Cookies[ "mycookies" ].Value; ViewBag.CID = System.Web.HttpContext.Current.Request.Cookies[ "mycookies" ].Name; ViewBag.CDO = System.Web.HttpContext.Current.Request.Cookies[ "mycookies" ].Domain; return View(); } |
(3)將session和cookies資訊在頁面顯示,GetSession視圖代碼如下:
@{ ViewBag.Title = "GetSession";}<h2>網站:A -- GetSession</h2><span>網站:A</span><br /><span>Session Value: @ViewBag.DD</span><br/><br /><span>Session SCode: @ViewBag.SCode</span><br /><br /><span>Session ID: @ViewBag.SID</span><br /><br /><span>Cookies ID: @ViewBag.CID</span><br /><br /><span>Cookies Values: @ViewBag.CVAL</span><br /><br /><span>Cookies Values: @ViewBag.CDO</span>
以上實現session和cookies讀寫,為了驗證負載平衡下,每次請求處理是否保持一致,接下來重要內容,做負載平衡如何如何保持session一致,對於asp.net技術session原理此處不做介紹,網上搜尋下大把。
2、Session共用技術
.Net平台對支援幾種session儲存模式:
(1)InProc 模式
session儲存於當前網站在同一個進程內,修改web.config或者bin中檔案更新,會導致session丟失。此模式為預設模式。
(2)aspnet state 模式
aspnet state是將session儲存在狀態服務中,需要啟動ASP.NET State Service,能看到進程aspnet_state.exe。還需要在web.config配置此模式。
(3)SQLServer 模式
此模式需要SQL Server配置相關資訊,啟動代理服務、資料庫帳號及表,並將web.config指向資料庫。
(4)第三方擴充 模式
本架構採用此模式,將session儲存到其他儲存,比如:Memcached、redis緩衝中,達到共用session的目的。可以通過實現ASP.NET中的SessionStateStoreProviderBase這個抽象類別擴充。本系統採用將session儲存在redis緩衝中,通過引入 RedisSessionStateProvider組件。
Install-Package Microsoft.Web.RedisSessionStateProvider
3、Nginx服務狀態情況
在centos終端輸入命令service nginx status 查看情況,確保服務正常運行。
4、Web網站部署
部署兩個網站分別為:
網站A:連接埠為8081,
網站B:連接埠為8082,
二、功能效果展現
(1)瀏覽器訪問Index方法,http://192.168.119.128/demo,顯示如下:
(2)瀏覽器訪問GetSession方法,http://192.168.119.128/demo/getsession,顯示如下:
通過以上驗證,擷取到的session和cookies都是一致。
作者:andon
出處:http://www.cnblogs.com/Andon_liu
關於專註於微軟平台項目架構、管理。熟悉設計模式、領域驅動、架構設計、敏捷開發和專案管理。現主要從事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的項目開發、架構、管理工作。 如有問題或建議,請一起學習討論!
Net分布式系統之二:CentOS系統搭建Nginx負載平衡(下)