Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [Asp.Net MVC3

  1. #1

    [Asp.Net MVC3

    Salve sooono nuovo nell'utilizzo di mvc3 ed ho dei problemi nell'utilizzo della sessione in un controller nel quale richiamo due metodi.
    Il mio problema dunque č relativo all'utilizzo di una variabile di sessione nel passaggio tra una action ed un altra. praticamente scrivo quanto segue:

    public class HomeController : Controller
    {
    public ActionResult Start()
    {
    //Verifico che l utente esista
    if (Session["user"] == null)
    return RedirectToAction("Login");

    //Carico i modelli delle emails

    return View();
    }

    // GET: /Account/LogOn
    public ActionResult Login()
    {
    return View();
    }

    // POST: /Account/LogOn
    [HttpPost]
    public ActionResult Login(UserModel model, string returnUrl)
    {
    Session["user"] = model;
    return RedirectToAction("Start");

    ...
    }

    quando dall acton login redireziono verso l action start in quest'ultima la variabile user in sessione č null.
    Potete spiegarmene il motivo?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    molto probabilmente non sta funzionando il model-binding gia in LogOn. Fai una verifica controllando model prima di assegnarlo alla session e vedrai che č con molta probabilitā č null.

    Nella view Login stai usando gli helper tipizzati? (es. Html.TextBoxFor(m => m.Username))

    P.S.
    Se stai solo provando va bene, altrimenti occhio che non č cosi che si gestisce l'autorizzazione in asp.net.

  3. #3
    No no sto solo provando e nella Login Action il model č istanziato e valorizzato correttamente.Quando pero faccio una redirect dal Login action alla start action tutti gli oggetti in sessione vengono cancellati.

    Cmq si sto utilizzando gli helper tipizzati

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    č strano. Se la Session fosse stata disattivata avresti sollevato un eccezione ma dal codice da te postato non vedo nč l'attributo sessionState disattivato nč HandleError che sopprime l'eccezione...

    Se in login ci scrivi piu banalmente

    Session["prova"] = "prova";

    e in start

    var prova = Session["prova"];

    funziona?

    e se fai la stessa cosa usando TempData invece che Session? TempData č il modo piu consono per passare i dati temporanei tra due richieste http ma non č altro che la Session usata in modo piu ottimizzato. Fai entrambe le prove magari fai sapere...

  5. #5
    Ho effettuto diverse prove ed il comportamento "credo" anomalo avviene in questa situazione:

    if (ModelState.IsValid)
    {
    Se metto qui funziona
    Session["y"] = "prova1";
    Session["y"] = "prova";
    return RedirectToAction("Start");

    if (Membership.ValidateUser(model.UserName, model.Password))
    {

    }
    se metto qui non funziona
    Session["y"] = "prova1";
    Session["y"] = "prova";
    return RedirectToAction("Start");
    }

    Praticamente se creo la variabile di sessione prima dell'attivitā di validazione utente e redireziono, nell'action start leggo le variabili, se la metto dopo le variabili sono vuote.

  6. #6
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    quindi non avevi postato il codice "vero" inizialmente.

    in ogni modo č anomalo come comportamento ma non del tutto anomalo. La sessione puo resettarsi inaspettatamente ma che lo faccia sistematicamente effettivamente č strano...

    se faccio io una prova tutto funziona correttamente (codice copia incollato):

    codice:
    public ActionResult Index()
            {
                Session["ppp"] = new { ppp = "ppp" };
                Membership.ValidateUser("ppp", "ppp");
                FormsAuthentication.SetAuthCookie("ppp", false);
                Session["qqq"] = new { qqq = "qqq" };
    
                return RedirectToAction("Prova");
            }
    
            [Authorize]
            public ActionResult Prova()
            {
                var ppp = Session["ppp"]; //valorizzato
                var qqq = Session["qqq"]; //valorizzato
    
                return View();
            }
    ma il problema reale qual'č? sicuro che sia necessaria la Session per risolverlo? Poi prima ti avevo suggerito di provare con TempData... come č andata?

  7. #7
    non č che non ho postato tutto il codice, č che mi sembrava inutile postare il codice nativo del template mvc3. Cmq sia boh, provo a ricreare da zero il template!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.