¿Cómo guardo una variable en la session y utilizo en otro controller en ASP.NET MVC 5?

Estoy haciendo una llamada a un Web Service ASMX, instancio el WS, el output y hago la llamada.

Lo que me gustaría hacer es guardar el output en la session y utilizar mas tarde en otros Controllers los datos que recibí.

Código de la llamada:

[HttpPost]
public ActionResult Login(Models.HomeViewModels.Login login)
{
    if (ModelState.IsValid)
    {
        MD5 md5 = new MD5CryptoServiceProvider();
        Byte[] originalBytes = System.Text.ASCIIEncoding.Default.GetBytes(login.Contraseña);
        Byte[] encodedBytes = md5.ComputeHash(originalBytes);

        string hash = BitConverter.ToString(encodedBytes).Replace("-", "").ToLower();

        SRWSAPP.WSAPPSoapClient wsWSAPP = new SRWSAPP.WSAPPSoapClient();
        SRWSAPP.Autenticacion outAutenticacion = new SRWSAPP.Autenticacion();
        outAutenticacion = wsWSAPP.AutenticarUsuario(login.Usuario, hash);

        if (outAutenticacion.CodError == 0)
        {
            return RedirectToAction("Informe", "Solicitudes");
        } else {
            return View();
        }
    }
    return View();
}
1
задан 12.10.2016, 19:26
5 ответов

Чтобы сохранять:

System.Web.HttpContext.Current.Session["sessionString"] = sessionValue; 

, Чтобы читать хранившиеся переменные:

ViewData["sessionString"] = System.Web.HttpContext.Current.Session["sessionString"] as String; 

Для большего informaciГіn: https://code.msdn.microsoft.com/How-to-create-and-access-447ada98

6
ответ дан 24.11.2019, 13:08

пробуй с:

TempData["clave"] = "esta variable perdura entre controladores";
0
ответ дан 24.11.2019, 13:08
  • 1
    Достижение TempData - на уровне Request, означает, что он только пребывает живым в следующем petici и # 243; n. – ggderas 12.10.2016, 01:44
Session["variable_sesion"] = outAutenticacion;
0
ответ дан 24.11.2019, 13:08
  • 1
    К сожалению то, что предлагает Ферги Говэйн, не служить и # 225; если ты хочешь иметь доступ к информации в течение всего sesi и # 243; n. TempData потом, который становился бы pr и # 243; xima названная (HttpRequest), теряться и # 225; объект в cuesti и # 243; n. – Alfred Severo 11.10.2016, 22:24

Я предотвратил бы самое возможное использовать переменные сеанса. Протокол HTTP - "stateless" (без бывший, а именно каждый request независимый от предыдущего). framework дает тебе какие-то программные средства, чтобы это оплачивать, но создает другие проблемы в конце концов. Какие-то альтернативы:

  • Если информация соединена с пользователем, сохраняй ее в базе данных
  • Если ты требуешь информации только для после redirect, используй TempData
  • Если информация ограничена, ты можешь включать ее в redirect:

RedirectToAction("Informe", "Solicitudes", new { respuesta = "info"});

0
ответ дан 24.11.2019, 13:08

Ты реализуешь login, не сохраняют в Session данные об удостоверении.

не, поскольку ты осуществляешь безопасность в сайте, если ты используешь: asp.net membership, simplemembership или identity, но ты используешь Session для безопасности он неправильный.

Introduction to ASP.NET Identity

Идея состоит, в том, чтобы после заверяя тебя, ты использовал Claims, чтобы сохранять info связанная с безопасностью

новую эру ее autentificaciГіn: Claims

0
ответ дан 24.11.2019, 13:08