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

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012
  • MikeyMacintosh

    MikeyM

    28 Aralık 2009