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

  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • picster

    picster

    20 NİSAN 2006
  • TechRax

    TechRax

    21 EYLÜL 2009