gpt4 book ai didi

asp.net-mvc - MVC 路由错误 : The constraint entry 'Length'

转载 作者:行者123 更新时间:2023-12-02 06:16:17 25 4
gpt4 key购买 nike

我有一个名为 Account 的 Controller ,其操作具有以下签名:

public ActionResult Verify(string userName, Guid authorisationToken);

我创建了一个链接来调用此操作:

/Account/Verify/sachin13/409bdaaa-0b65-4bb8-8695-6e430323d8f8

当我访问此链接时,出现以下错误:

The constraint entry 'Length' on the route with URL 'Account/{Verify}/{userName}/{authorisationToken}' must have a string value or be of a type which implements IRouteConstraint.

这就是我的 RegisterRoutes 方法在 Global.asax 中的样子:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } ,// Parameter defaults
new[] { "UI.Controllers" }
);

routes.MapRoute(
"AccountVerify",
"Account/{Verify}/{userName}/{authorisationToken}",
new { controller = "Account", action = "Verify", userName = "", authorisationToken = "" },
"UI.Controllers"
);
}

两个问题:

  1. 我是否做了任何不寻常的事情,或者我的方法是否符合标准实践?

  2. 这里出了什么问题?

谢谢

萨钦

最佳答案

你应该改变

“UI.Controllers”

new[] { "UI.Controllers"}

在你的第二条 route 。

如果您仅指定单个字符串(而不是数组),那么您会得到 MapRoute 函数的错误重载 - 而不是 MapRoute(RouteCollection, String, String, Object, String[ ]) 接受命名空间列表作为最后一个参数,您将得到 MapRoute(RouteCollection, String, String, Object, Object) ,它期望约束作为最后一个参数。字符串“UI.Controllers”不是正确的约束规范 => 你会得到错误。

此外,@Pankaj 建议您的自定义路线应在默认路线之前进行,并且验证应不带“{}”。

完整代码:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"AccountVerify",
"Account/Verify/{userName}/{authorisationToken}",
new { controller = "Account", action = "Verify", userName = "", authorisationToken = "" },
new [] { "UI.Controllers" }
);

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } ,// Parameter defaults
new[] { "UI.Controllers" }
);
}

关于asp.net-mvc - MVC 路由错误 : The constraint entry 'Length' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8909356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com