是的,这可能听起来很奇怪,但我们有第三方库,它支持JavaScript应用程序使用的某种服务。这个第三方库负责调用正确的控制器和操作。
这一切都很好但我们现在需要限制到这个“ServiceController”的路由,也许还有一两个其他控制器。在当前版本(MVC2)中,我们简单地覆盖控制器工厂,该工厂静态地检查有效的控制器。是的,它有效,但它更像是一种解决方法,然后永远留在那里。那么有没有任何干净的存档方式(通过配置路由?注意我们不使用authorize属性。我们将在下一个版本中使用MVC4)
答案 0 :(得分:1)
添加全局过滤器并将逻辑放入OnActionExecuting(http://msdn.microsoft.com/en-us/library/gg416513(v=vs.98).aspx)
选项1 :检查routeValues以获取正确的控制器和操作
var controllerName = filterContext.RouteData.Values["controller"];
var actionName = filterContext.RouteData.Values["action"];
选项2 :检查此值 Request.Url
实际上你只允许定义的路线而没有别的,所以这个问题确实有点奇怪。