我收到了一个用Asp.Net MVC4构建的原型应用程序。目前,它正在使用NInject、ServiceLocator等将默认控制器工厂替换为自定义控制器工厂。
问题在于,通过替换默认控制器工厂,JS文件的请求被视为请求控制器和操作,而不是合法的JS文件请求。
因此,查看Visual Studio创建的默认模板,路由配置如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
看完这个问题,我想知道:为什么Asp.Net MVC没有解释对“/Scripts/jquery.js”的请求?我的意思是,为什么它不认为"Script"是一个控制器,"jquery.js"是一个操作?
由于如果我禁用控制器工厂覆盖,该项目可以正常工作,因此我只能假设默认工厂对这种检查负责。这意味着"/Scripts/jquery.js"确实被传递给了控制器工厂,而我之前并不知道这一点。
有人可以解释一下吗?
在覆盖控制器工厂时,应该进行什么样的处理以避免出现此类问题?