asp.net mvc路由问题重定向
我正在尝试创建一个重定向到URL的路由,但我一辈子都无法让它工作。以下是我目前掌握的情况:asp.net mvc路由问题重定向,asp.net,asp.net-mvc,routes,Asp.net,Asp.net Mvc,Routes,我正在尝试创建一个重定向到URL的路由,但我一辈子都无法让它工作。以下是我目前掌握的情况: public class GoAreaRegistration : AreaRegistration { public override string AreaName { get { return "Go"; } } public override void RegisterArea( AreaRe
public class GoAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Go";
}
}
public override void RegisterArea( AreaRegistrationContext context )
{
context.MapRoute(
"Go/Issues",
"go/issues/{issueID}",
new { controller = "Go", action = "GoIssues" },
new { issueID = @"\d+" }
);
}
}
和我的控制器:
public class GoController : Controller
{
public ActionResult GoIssues( int issueID )
{
var version = getVersion( issueID );
if( version != null )
{
string url = MakeUrl(version, issueID);
// Redirect to the right url
return Redirect( url );
}
}
// not found
return HttpNotFound();
}
}
这一点的关键是确定要重定向到的正确版本以及重定向到那里的版本。但出于某种原因,go/issues/123给了我一个404未找到的答案。我使用了路由调试工具,它显示这个路由被命中,但当我禁用它时,我返回到404
非常感谢您的帮助
谢谢尝试将您的路线设置为全局路线配置,而不是区域注册,然后查看是否有效
我已经尝试在我的测试项目中使用您的配置,它运行良好。如果这仍然不起作用,我建议从小事做起,让它起作用,然后慢慢地将您的路线配置添加到它上,直到它中断。尝试将您的路线置于全局路线配置中,而不是区域注册中,然后看看是否起作用
我已经尝试在我的测试项目中使用您的配置,它运行良好。如果这仍然不起作用,我建议从小事做起,让它起作用,然后慢慢地将您的路由配置添加到它上,直到它中断。如果其他人也有同样的问题,我已经找到了答案 在谷歌搜索了很多之后,我发现了下面这篇解释路由工作原理的文章 文章说ASP.NET希望名称空间是某种格式: 问题是控制器上的命名空间。事实证明,MVC有一个约定,即区域名称应位于控制器的命名空间中 所以–我有StatsMe.API.CategoriesController,但MVC正在寻找StatsMe.Areas.API.CategoriesController 最后给我通风报信的是RoutedBugger输出中的一些东西 恼人的是,错误消息本可以说“嘿,我在找StatsMe.Areas.API.CategoriesController,但我找不到它”,而不是它发出的非常普通的消息
如果其他人也有同样的问题,我已经找到了答案 在谷歌搜索了很多之后,我发现了下面这篇解释路由工作原理的文章 文章说ASP.NET希望名称空间是某种格式: 问题是控制器上的命名空间。事实证明,MVC有一个约定,即区域名称应位于控制器的命名空间中 所以–我有StatsMe.API.CategoriesController,但MVC正在寻找StatsMe.Areas.API.CategoriesController 最后给我通风报信的是RoutedBugger输出中的一些东西 恼人的是,错误消息本可以说“嘿,我在找StatsMe.Areas.API.CategoriesController,但我找不到它”,而不是它发出的非常普通的消息
谢谢,但区域注册对我来说适用于除此之外的所有内容。谢谢,但区域注册对我来说适用于除此之外的所有内容。