可以在没有 Web 的情况下使用 ASP.Net MVC 5 中的属性路由 API

Can Attribute Routing in ASP.Net MVC 5 Be Used Without Web API

我有一个 MVC 项目,我正尝试在其中使用属性路由,但是对于有效的 url,我不断收到 404。

我google想看看属性路由的常见问题是什么,看看我是否遗漏了一些明显的东西,大多数答案似乎都是确保路由注册如下:

 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!";
    }
}

我可以得到'world!' url 'localhost:58268/hello' 的有效响应,这是一个开始。所以看起来你可以在 Mvc 5 中使用属性路由而不依赖于 Web API.

我一定是在实际代码的情况下定义了Route。

是的,您可以在没有 webAPI 的情况下使用 MVC 属性路由。它是与 WebAPI 属性路由不同的功能。两者都是在 WebAPI 2 和 MVC 5 中同时引入的。

Web API 属性路由比 MVC 更灵活一些,对于许多场景来说应该可以正常工作。

请注意,在 MVC Core 中,Web API 和 MVC 框架 merged.There 是一个单属性路由功能,它更加灵活,并且解决了以前框架中的大部分限制。