Hej jeg har et lille men meget ireterne problem med en session.
problemet i korte træk når jeg redirescer fra en side til en anden bliver min session sat til Null.
default.aspx sætter Session["login"] = "all"; Redirect til dall.aspx;
dall.aspx // her skulle den jo så gerne hoppe ind i if men den hopper else. if (Session["login"] == "all") { Response.Write("hejmed dig"); } else { Response.Redirect() tilbage til default.aspx }
jeg har prøvet at skrive min session["login"] ud i stedet for Redirect til dall.aspx og der skriver den at den er lig med "all" altså det der skulle stå. jeg har også prøvet at skrive den ud når jeg er blevet sendt tilbage til default.aspx og der er den null.
plz hjælp hele koden for de 2 sider følger her under
if (Session["login"] == null) { Session["login"] = ""; }
/* fejl.1 feltet brugernavn er ikke udfyldt fejl.2 feltet adgangskode er ikke udfyldt fejl.3 access expired fejl.4 access denied fejl.5 brugeren prøver at komme ind på en side hvor han ikke har adgang */ if (Request.QueryString["fejl"] == "1") { Response.Write("<br>"); lbl_fejl.Text = "Feltet brugernavn er ikke udfyldt"; Response.Write("<br>"); } else if (Request.QueryString["fejl"] == "2") { Response.Write("<br>"); lbl_fejl.Text = "Feltet adgangskode er ikke udfyldt"; Response.Write("<br>"); } else if (Request.QueryString["fejl"] == "3") { Response.Write("<br>"); lbl_fejl.Text = "Det er nu 14 dage siden du fik tilsendt brugernavn og adgangskode og du har ikke længer adgang til . kontakt evt. for at forlænge perioden. "; Response.Write("<br>"); } else if (Request.QueryString["fejl"] == "4") { Response.Write("<br>"); lbl_fejl.Text = "Forkert brugernavn og eller adgangskode prøv igen."; Response.Write("<br>"); } else if (Request.QueryString["fejl"] == "5") { Response.Write("<br>"); lbl_fejl.Text = "Du har ikke adgang til denneside."; Response.Write("<br>"); Response.Write("session[login]: "+Session["login"]+"<br>"); } else { lbl_fejl.Text = ""; } } // =================
string str_attempt_username = ""; string str_attempt_password = ""; int int_user_ID = -1; string str_username = ""; string str_password = ""; DateTime date_created = new DateTime(); DateTime date_startdate = new DateTime(); DateTime date_enddate = new DateTime(); string str_access_to = ""; int int_antal_logins = -1; int int_antal_adgang = -1;
string str_login = ""; //bruges til at fortælle hvor en bruger skal redirectes hen
// set variabler if ((Request.Form["username"] == null) || (Request.Form["username"] == "")) { // fejl et feltet username er ikke udfyldt. Response.Redirect("default.aspx?fejl=1"); } else if ((Request.Form["password"] == null) || (Request.Form["password"] == "")) { // fejl et feltet password er ikke udfyldt. Response.Redirect("default.aspx?fejl=2"); } else { str_attempt_username = Request.Form["username"]; str_attempt_password = Request.Form["password"]; }
//Forbindelse til MS Access DB string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db/db_skab_adgang.mdb"); OleDbConnection objConn = new OleDbConnection(strCon);
//Åben forbindelse til DB objConn.Open();
//Byg SQL streng og kald til DB string strSQL = "SELECT * FROM [user] Where username='"+str_attempt_username+"' AND password='"+str_attempt_password+"'"; OleDbCommand objCmd = new OleDbCommand(strSQL,objConn);
//Opret DataReader og bind data til den OleDbDataReader objDR; objDR = objCmd.ExecuteReader();
if (str_login == "start") { Response.Redirect("dstart.aspx"); } else if (str_login == "shop") { Response.Redirect("dshop.aspx"); } else if (str_login == "customize") { Response.Redirect("dcustomize.aspx"); } else if (str_login == "all") { // kan kodt få den til at redirecte med str_session_login == "all" Response.Redirect("dall.aspx"); } else if (str_login == "123") { // test
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 18: Line 19: //string str_session_login = (string)Session["login"]; Line 20: if (Session["login"].Equals("all")) { Line 21: Line 22: Response.Write("hej med dig");
jeg skrev denne sætning i stede gør det nemmere at se hvad der er i session med de to hej er syntes jeg. Response.Write("hej: " +str_session_login+ " :hej"); dr_chaos
og fik dette svar ud hej: :hej
altså "" eller Null ganske som forvented. deg ikke det jeg gerne ville have
jeg har lavet en simpel test: protected void test(object sender, EventArgs e) { Session["login"] = "all"; string str_login = (string)Session["login"];
if (str_login == "start") { Response.Redirect("default.aspx"); } else if (str_login == "shop") { Response.Redirect("default.aspx"); } else if (str_login == "customize") { Response.Redirect("default.aspx"); } else if (str_login == "all") { // kan kodt få den til at redirecte med str_session_login == "all" Response.Redirect("default.aspx"); } }
prøv at test med den funktion jeg lavede : protected void test(object sender, EventArgs e) { Session["login"] = "all"; string str_login = (string)Session["login"];
if (str_login == "start") { Response.Redirect("default.aspx"); } else if (str_login == "shop") { Response.Redirect("default.aspx"); } else if (str_login == "customize") { Response.Redirect("default.aspx"); } else if (str_login == "all") { // kan kodt få den til at redirecte med str_session_login == "all" Response.Redirect("default.aspx"); } }
prøv lige at følge disse step her: 1) Open IIS Manager 2) Right-click default web site / your web site 3) Open properties 4) Open home directory tab. 5) You can see a configuration button at the bottom near application name. 6) click configuration button 7) OPen app options (iis 5.0) / options (iis 6.0) tab. 8) check enable session check checkbox.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.