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

  • Droid Life

    Droid Life

    17 Kasım 2009
  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • RD

    RD

    19 NİSAN 2006