MVC 3 CookieTempDataProvider和Ninject IOC

| 我正在尝试在MVC 3期货程序集中使用CookieTempDataProvider。我相信我已经使用ninject成功“连接”了它。以下是我的app_start.cs文件中的代码: [程序集:WebActivator.PreApplicationStartMethod(typeof(Web.AppStart),\“开始\”)] 命名空间Web {     公共静态类AppStart {         公共静态无效RegisterServices(IKernel内核){
        kernel.Bind<ITempDataProvider>().To<CookieTempDataProvider>();
    }

    public static void Start() {
        // Create Ninject DI Kernel 
      //  IKernel kernel = new StandardKernel();
        IKernel kernel = Container;

        // Register services with our Ninject DI Container
        RegisterServices(kernel);

        // Tell ASP.NET MVC 3 to use our Ninject DI Container 
        DependencyResolver.SetResolver(new NinjectServiceLocator(kernel));

    }

    static IKernel _container;
    public static IKernel Container
    {
        get
        {
            if (_container == null)
                _container = new StandardKernel();
            return _container;
        }
    }
但是,当我访问使用TempData的页面时,出现此错误,表明它仍在尝试使用SessionTempDataProvider: \'/ \'应用程序中的服务器错误。 SessionStateTempDataProvider类要求启用会话状态。 说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。 异常详细信息:System.InvalidOperationException:SessionStateTempDataProvider类要求启用会话状态。 我一定想念一些东西,我不知道那是什么。非常感激任何的帮助。 非常感谢     
已邀请:
我只能使它与BaseController方法一起使用。控制器创建过程不会要求Ninject提供ITempDataProvider。
public class BaseController : Controller
{
    protected override ITempDataProvider CreateTempDataProvider()
    {
        return new CookieTempDataProvider(HttpContext);
    }
}
    
扩展控制器类
public static void SetMessage(this Controller controller, String message)
{
    controller.TempData[\"Messag\"] = message;
}
然后,您可以像这样使用它:
public ActionResult Save()
{
    //Validation... 

    Save(Foo);
    this.SetMessage(\"Item saved successfully\");
    return Redirect(\"/Site\"); 
}
第三名:)     

要回复问题请先登录注册