首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未找到WebApi2 RoutePrefix和端点路由=

未找到WebApi2 RoutePrefix和端点路由=
EN

Stack Overflow用户
提问于 2016-05-30 22:41:57
回答 2查看 813关注 0票数 2

我已经装饰了api控制器,例如:

[RoutePrefix("api/admin/notification")] public class LanguageController : BaseController

在里面,我有一个获取端点:

代码语言:javascript
运行
复制
[HttpGet]
[Route("app/{productGuid}")]
public async Task<IHttpActionResult> GetAllNotificationsForApp([FromUri]string productGuid)

现在,我假设访问该资源的正确方法是:

GET http://[api-url]/api/admin/notification/app/someguid

但是,这会产生404。

我试过的是:

-Removing [FromUri]

-Passing productGuid作为querystring的一部分,即.../app?productGuid=something (相对于/app/{productGuid})

是的,我正在使用config.MapHttpAttributeRoutes();,并且我已经验证了其他也使用RoutePrefix工作的api控制器。

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-31 14:18:15

事实证明,即使两个api控制器被映射到不同的路由,也不能有两个类名相同的api控制器。

我有另一个名为LanguageController的控制器,位于不同的名称空间中,并映射到不同的路由;为了使其工作,我必须重命名其中的一个。

基于Different RoutePrefix, same controller name

票数 1
EN

Stack Overflow用户

发布于 2016-05-30 23:54:33

[FromUri]用于强制Web从URI中读取复杂类型。移除它应该有效的。

您还可以查看如何将参数从string更改为Guid,并对路由中的占位符应用适当的约束。ie:[Route("app/{productGuid:guid}")]

代码语言:javascript
运行
复制
[RoutePrefix("api/admin/notification")]
public class LanguageController : BaseController {
    //GET: api/admin/notification/app/{guid}
    [HttpGet]
    [Route("app/{productGuid:guid}")]
    public async Task<IHttpActionResult> GetAllNotificationsForApp(Guid productGuid) {...}

}

其他需要检查的事情:

确保config.MapHttpAttributeRoutes();是在基于约定的路由之前完成的。当第一场比赛获胜时,订单是很重要的。

代码语言:javascript
运行
复制
public static class WebApiConfig {
    public static void Register(HttpConfiguration config) {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

        // Convention-based routing.
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37534461

复制
相关文章

相似问题

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