SORU
19 Mayıs 2009, Salı


Nasıl ASP.NET MVC oturum durumunu devre dışı bırakabilir miyim?

Mümkün olduğunca her zamanki HttpModules çok kaldırma ve devre dışı oturum durumu içeren çok hafif ASP.NET MVC bir site istiyorum. Bunu yapmak için çalıştığınızda, ancak aşağıdaki hatayı alıyorum:

The SessionStateTempDataProvider requires SessionState to be enabled.

Web oturum durumunu devre dışı bıraktım.config:

<sessionState mode="Off" />

ASP.NET MVC TempData için oturum durumu kullanan anlıyorum, ama TempData istiyorum/istemiyorum - ben sadece oturum durumunu devre dışı bırakmak istiyorum. Yardım!

CEVAP
19 Mayıs 2009, Salı


Kendi ControllerFactory ve DummyTempDataProvider yapabilirsin. Şöyle bir şey:

public class NoSessionControllerFactory : DefaultControllerFactory
{
  protected override IController GetControllerInstance(Type controllerType)
  {
    var controller = base.GetControllerInstance(controllerType);
    ((Controller) controller).TempDataProvider = new DummyTempDataProvider();
    return controller;
  }
}


public class DummyTempDataProvider : ITempDataProvider
{
  public IDictionary<string, object> LoadTempData(ControllerContext controllerContext)
  {
    return new Dictionary<string, object>();
  }

  public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
  {
  }
}

Ve sonra sadece app başlangıçta denetleyicisi fabrika - örneğin bu, genel olarak kaydetmeniz gerekir.asax:

ControllerBuilder.Current.SetControllerFactory(new NoSessionControllerFactory());

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • newport83

    newport83

    19 HAZİRAN 2006
  • Samantha Crain

    Samantha Cra

    30 EKİM 2008
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008