【发布时间】:2017-06-19 15:33:34
【问题描述】:
我有一个 MVC 项目,我正在尝试在其中使用属性路由,但是我不断收到有效 url 的 404。
我让谷歌看看属性路由的常见问题是什么,看看我是否遗漏了一些明显的东西,大多数答案似乎是确保路由注册如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
routes.MapMvCAttributeRoutes() 是在控制器中搜索路由属性并配置路由的代码。
我还看到了一些对 Web API 的引用,因为我相信这些属性也可以在 APIController 中使用。
但是下面的文章似乎暗示它可以单独在 Mvc 中使用,因为没有提到 Web API。
Attribute Routing in ASP.Net MVC 5
那么是否存在依赖关系,是否需要 Web API 才能让路由属性在 MVC 中工作?
更新
使用以下精简代码:
[Route("hello")]
public class SomeController : Controller
{
// GET: Some
public string Index()
{
return "world!";
}
}
我可以得到“世界!”的有效响应对于 url 'localhost:58268/hello',这是一个开始。所以看起来你可以在 Mvc 5 中拥有属性路由而不依赖于 Web API。
在实际代码的情况下,我一定是在定义路由时出错了。
【问题讨论】:
-
请贴出控制器代码和路由属性。
-
@PanagiotisKanavos 看起来我在实际控制器代码上定义我的路由属性时一定犯了一个错误。当我创建一个精简的控制器作为示例发布时,我可以获得结果。因此,如果您想回答“Mvc 路由属性不需要对 Web API 的依赖”的问题,我会将其标记为答案。要么,要么我应该关闭这个问题。还是谢谢。
标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing