首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP 5属性路由不注册路由

ASP 5属性路由不注册路由
EN

Stack Overflow用户
提问于 2014-09-08 15:03:15
回答 1查看 5.2K关注 0票数 4

概述

我目前正在尝试使属性路由与我的api控制器一起工作。它似乎不起作用,我也不知道为什么。我不知道我是不是错过了关键的一步,或者问题出在哪里。

问题

我正在尝试点击localhost/api/user/custom?test=1,但我得到了404 (我希望这个能工作)

如果我点击localhost/api/customapi?test=1,我就成功地进入了我的方法

为什么第一个网址不起作用?

设置

我的设置如下:

CustomController.cs

代码语言:javascript
复制
[System.Web.Mvc.RoutePrefix("api")]
public class CustomApiController : ApiController
{
    [System.Web.Mvc.Route("user/custom")]
    [System.Web.Http.HttpGet]
    public async Task<CustomResponse> Get([FromUri] CustomRequest request)
    {
        //Work
    }
}

WebApiConfig.cs

代码语言:javascript
复制
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        ...(json serializer settings)...

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
            );
    }
}

RouteConfig.cs

代码语言:javascript
复制
public static class RouteConfig
{
    public static void Register(RouteCollection routes, bool registerAreas = true)
    {
        if(registerAreas)
        {
            AreaRegistration.RegisterAllAreas();
        }

        //Ignore Routes
        ...

        //Register specific routes
        routes.MapRoute("HomeUrl", "home", new { controller = "Home", action = "Index" });
        .
        .

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

Global.asax.cs

代码语言:javascript
复制
public class Global : HttpApplication
{
    protected void Application_Start()
    {
        ....(app startup stuff)...

        GlobalConfiguration.Configure(WebApiConfig.Register);
        BundleConfig.Register(BundleTable.Bundles);

        ....(more app startup stuff)...

        RouteConfig.Register(RouteTable.Routes);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 16:32:28

我在路由中使用了错误的命名空间。

代码语言:javascript
复制
[System.Web.Http.Route("")]   //Use this namespace for Web API 2
[System.Web.Mvc.Route("")]

[System.Web.Http.RoutePrefix("api")]  //Use this namespace Web API 2
[System.Web.Mvc.RoutePrefix("api")]
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25727305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档