尝试从MenuHelperModel
构建菜单会导致MvcSiteMap构建所有我的控制器。这可能是一个重大的性能打击。
当我依靠[Authorize]
为控制器设置安全性时,这是唯一的方法吗?
答案 0 :(得分:2)
首先,constructors should be simple。如果在每个请求上创建控制器会降低您的应用程序速度,那么这表明您的构造函数正在做太多工作。无论如何,MVC框架为每个请求创建一个实例,因此这可能比MvcSiteMapProvider
更慢。
那说,还有另一种选择。您可以使用roles属性/ Roles属性设置与AuthorizeAttribute中相同的角色。这样做的缺点是:
您可以通过创建使用Reflection扫描应用程序的动态节点提供程序并将AuthorizeAttribute中的角色设置为相应节点的角色来解决第一个限制。此代码仅在每个缓存超时时运行一次,因此在此时使用一些Reflection可能不会导致性能问题。