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 属性修饰您的操作,因此可能会发生这种情况。
路由问题会完全阻止击中动作。所以我会排除那个。
我在使用 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 属性修饰您的操作,因此可能会发生这种情况。
路由问题会完全阻止击中动作。所以我会排除那个。