ASP.NET带加号的MVC路由

ASP.NET MVC routing with a plus symbol

我在使用 AD 身份验证的 MVC Intranet 站点上工作,当用户尝试使用这种格式的 url 时我收到错误消息..

.../myController/view/64+

其他错误如

.../myController/view/aString

.../myController/view/

都处理得很好,但“64+”场景命中授权属性,User.Identity 为空。

非常感谢任何指点。

控制器代码

[Authorize(roles="dom\group")]
public class MyController {

    [HttpGet]
    public ActionResult View(int id)
    {
        // do stuff..

        return View(viewModel);
    }


    protected override void OnException(ExceptionContext filterContext)
    {
       // handle and log error
    }
}

站点路由是默认的

    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 }
        );
    }
如果用户未登录,

User.Identity 为 null。由于您没有使用 Authorize 属性修饰您的操作,因此可能会发生这种情况。

路由问题会完全阻止击中动作。所以我会排除那个。