Asp.net MVC 3在从MVC 2升级后不使用Ninject?
我有一个使用Asp.net MVC2的web应用程序。我将它升级到了MVC3,现在我发现OutputCache功能不再工作了。我创建了一个简单的测试操作,如下所示Asp.net MVC 3在从MVC 2升级后不使用Ninject?,asp.net,asp.net-mvc,asp.net-mvc-3,caching,ninject,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Caching,Ninject,我有一个使用Asp.net MVC2的web应用程序。我将它升级到了MVC3,现在我发现OutputCache功能不再工作了。我创建了一个简单的测试操作,如下所示 [OutputCache(Duration = 1000000, VaryByParam = "none")] public virtual ActionResult CacheTest(string name) { string message = string.Format("{0}: Time is {1}",
[OutputCache(Duration = 1000000, VaryByParam = "none")]
public virtual ActionResult CacheTest(string name)
{
string message = string.Format("{0}: Time is {1}", name, DateTime.Now.ToLongTimeString());
ViewData.Add("Message", message);
return View();
}
这总是给出当前时间,表明它未被缓存。我是不是遗漏了什么
更多信息:如果我创建一个新的Mvc3应用程序,它可以正常工作。只有在升级的应用程序中我才有这个问题 更新:我也在使用Ninject。如果我停止使用Ninject OutputCache,它将开始工作
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}.aspx/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterDependencyResolver();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
protected void RegisterDependencyResolver()
{
var kernel = CreateKernel();
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
protected IKernel CreateKernel()
{
return new StandardKernel();
}
}
在ASP.NET MVC 3中使用Ninject的正确推荐方法如下:
ninject.mvc3
NuGet软件包。这将确保您获得与ASP.NET MVC 3兼容的最新版本App_Start/NinjectMVC3.cs
文件,您将在RegisterServices
方法中注册Ninject模块:
private static void RegisterServices(IKernel kernel)
{
var modules = new INinjectModule[]
{
// your modules here
};
kernel.Load(modules);
}
NinjectDependencyResolver
试着按照这些步骤做,也许你的问题会得到解决。奇怪,我无法重现这个问题。缓存适合我。如果我创建一个新的Mvc3应用程序,它可以正常工作。只有在升级的应用程序中我才有这个问题。这一切都没有意义。对我来说,这a)不能被重新编程b)只是没有意义-Ninject只是与
OutputCacheAttribute
无关,所以一定有什么事情搞砸了,比如有多个版本的Ninject或MVC在玩。另见