我試過使用亞馬遜網絡服務EC2來測試我正在開發的IIS/ASP.NET應用程序,並且我的登錄工作正常,但ASP.NET會話不會'似乎在重新加載頁面或轉移到另一頁面時似乎保持不變。從我的登錄表單頁面ASP.NET EC2上的ASP.NET會話持久性
的Page_Load代碼(會話被設置正確,直到我要麼移動頁面或刷新頁面LoginForm的)
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack)
{
NameValueCollection nvc = Request.Form;
string username = nvc["username"];
string password = nvc["password"];
Hydra.WebService1SoapClient client = new Hydra.WebService1SoapClient();
string sid = client.LoginSession(username, password);
if (sid != "Incorrect details")
HttpContext.Current.Session["loggedin"] = true;
else
HttpContext.Current.Session["loggedin"] = false;
}
}
下面是我的顯示頁面顯示會話數據。
<% if (HttpContext.Current.Session["loggedin"] == null || (bool)HttpContext.Current.Session["loggedin"] == false)
{ %>
<a class="menu" href="register.php">Create Account</a>
<% } else { %>
<a class="menu" href="hd.php">Dashboard</a> <a class="menu" href="ticketlist.php">Tickets</a> <a class="menu" href="admin/index.php">Admin</a>
<% } %>
Value: <% Response.Write("" + HttpContext.Current.Session["loggedin"] + " <br /> SID? " + HttpContext.Current.Session.SessionID); %>
我已經測試了這個在我的本地IIS系統上,它工作正常(會話是持久的)。
那麼我的問題是: 在AWS上做什麼不像InProc會話狀態存儲或者是否存在其他原因?
您是否在負載均衡器後面運行多個ec2實例?還是隻有一個? – 2014-12-04 19:11:42
@ E.J.Brennan不是它的單個實例沒有負載均衡,max iis workers設置爲1,iis設置被檢查爲會話狀態不正常,20分鐘超時,這些請求在一分鐘內。 – Ben 2014-12-04 22:42:12
如果您使用的是InProc會話狀態,那麼只需切換到Sql數據庫以保持會話。它更可靠,而且您不必擔心部署會話。它也很容易設置Sql Database支持的ASP.NET會話狀態。 – 2014-12-05 01:21:22