Amazon Web Services EC2를 사용하여 개발중인 IIS/ASP.NET 응용 프로그램을 테스트하려고 시도했지만 로그인이 작동하지만 ASP.NET 세션이 작동하지 않습니다 ' 페이지를 새로 고침하거나 다른 페이지로 이동할 때 계속 유지되는 것처럼 보입니다. 다음은AWS EC2의 ASP.NET 세션 지속성
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;
}
}
세션 데이터를 표시하기 위해 내 디스플레이 페이지에서 내 로그인 폼 페이지에서
를 Page_Load 코드 (I 중 하나가 페이지를 이동하거나 LoginForm 페이지를 새로 고침 할 때까지 세션이 올바르게 설정됩니다).
<% 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 인스턴스를 실행하고 있습니까? 아니면 단지 하나? –
@ E.J.Brennan 아니요. 단일 인스턴스가 아닌로드 균형 조정, max iis workers set 1, iis 설정에서 세션 상태가 20 분의 시간 초과로 improc이고 이러한 요청이 1 분 이내에 있음을 확인했습니다. – Ben
InProc 세션 상태를 사용하는 경우 Sql 데이터베이스로 전환하여 세션을 유지하십시오. 그것의 더 안정적이고 당신은 배포 살인 세션에 대해 걱정할 필요가 없습니다. 그것도 설치하는 SQL 데이터베이스 ASP.NET 세션 상태를 매우 쉽게. –