에 Asp.net 웹 사이트를 호스팅하는 동안은 온라인 시험을 실시하고 디스플레이 평가 점수 ASP.NET 웹 사이트를 만들었습니다. 로컬로 게시하고 IIS에서 호스팅했습니다. 그런 다음 다른 시스템과 lan을 통해 시스템을 연결했습니다. 내 노트북에서 처음 5 가지 질문에 답했습니다. 그리고 다른 랩톱에서 웹 사이트에 액세스하려고하면 첫 번째 질문 대신 5 번째 질문에서 시작됩니다.세션 문제 IIS
public partial class MainPage : System.Web.UI.Page
{
public static int Qnum=1, Score=0,Count=0;
public static List<int> answered=new List<int>();
private SQLconnect sqlconnect = new SQLconnect();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["Score"] = Score;
fnMCq();
}
}
public void fnMCq()
{
try
{
DataTable dt = new DataTable();
sqlconnect.Connection_string = System.Configuration.ConfigurationManager.AppSettings["conn_MCQ"];
string query = "select * from Questions where qid='" + Qnum + "'";
dt = sqlconnect.getDataTable(query);
string[] array = dt
.AsEnumerable()
.Select(row => row.Field<string>("question"))
.ToArray();
Question.Text = array[0];
query = "Select * from Answers where qid='" + Qnum + "'";
dt.Clear();
dt = sqlconnect.getDataTable(query);
Dictionary<string, string> values = new Dictionary<string, string>();
values.Add(dt.Rows[0][1].ToString(), "1");
values.Add(dt.Rows[0][2].ToString(), "2");
values.Add(dt.Rows[0][3].ToString(), "3");
values.Add(dt.Rows[0][4].ToString(), "4");
Answers.DataSource = values;
Answers.DataTextField = "key";
Answers.DataValueField = "Value";
Answers.DataBind();
fnHideSubmit();
if (Qnum == 1)
btnPrevious.Enabled = false;
else
btnPrevious.Enabled = true;
if (Qnum == 20)
btnNext.Enabled = false;
else
btnNext.Enabled = true;
}
catch (Exception e)
{
Session["error"] = e.Message;
Response.Redirect("ErrorPage.aspx");
}
}
protected void btnPrevious_Click(object sender, EventArgs e)
{
if (!isexamover())
{
Qnum = Qnum - 1;
fnMCq();
}
}
protected void btnNext_Click(object sender, EventArgs e)
{
if (!isexamover())
{
Qnum = Qnum + 1;
fnMCq();
}
}
public void fnUpdateScore()
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["conn_MCQ"]);
int selectedanswer,answer;
selectedanswer=Convert.ToInt32(Answers.SelectedValue);
string query = "select answer from questions where qid='"+Qnum+"'";
SqlCommand cmd=new SqlCommand(query,conn);
conn.Open();
sqlconnect.Connection_string = System.Configuration.ConfigurationManager.AppSettings["conn_MCQ"];
answer =Convert.ToInt32(cmd.ExecuteScalar().ToString()) ;
if (answer == selectedanswer)
{
Score = Score + 1;
Session["Score"] = Score;
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
answered.Add(Qnum);
fnHideSubmit();
fnUpdateScore();
if (!qbound())
{
if (!isexamover())
{
++Qnum;
fnMCq();
}
else
{
Session["Score"] = Score;
Response.Redirect("ScoreDisplay.aspx");
}
}
}
public void fnHideSubmit()
{
foreach (int i in answered)
{
if (i == Qnum)
{
btnSubmit.Enabled = false;
break;
}
else
btnSubmit.Enabled = true;
}
}
public bool qbound()
{
if (Qnum == 1 || Qnum == 20)
return true;
else
return false;
}
public bool isexamover()
{
if (answered.Count == 20)
{
Session["Score"] = Score;
Response.Redirect("ScoreDisplay.aspx");
return true;
}
return false;
}
귀하의 질문은 명확하지 않다 !!!!! –
문제를 더 잘 설명 할 수있는 코드를 추가하십시오. – paqogomez
나는 결코 설치 어떤 세션 @Hanlet .... 내가 세션이 자동으로 생성됩니다 때마다 요청이 서버로 전송됩니다 믿습니다. 그렇지 않니? –