首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于属性的路由不起作用的问题

基于属性的路由不起作用的问题
EN

Stack Overflow用户
提问于 2020-11-08 14:29:21
回答 1查看 30关注 0票数 0

我对基于属性的路由不起作用有问题。我已经设置了前缀(http://localhost:6600/api/camps/ATL2018/talks),如下所示,并设置了默认路由,它似乎运行良好。

代码语言:javascript
复制
namespace TheCodeCamp.Controllers
{
    [RoutePrefix("api/camps/{moniker}/talks")]
    public class TalkController : ApiController

    {
        private readonly ICampRepository _repositiry;
        private readonly IMapper _mapper;

        public TalkController(ICampRepository repository, IMapper mapper)
        {
            _repositiry = repository;
            _mapper = mapper;

        }

        [Route()]
        public async Task<IHttpActionResult> Get(string moniker, bool includeSpeakers = false)
        {
            try 
            {
                var results = await _repositiry.GetTalksByMonikerAsync(moniker, includeSpeakers);

                return Ok(_mapper.Map<IEnumerable<TalkModel>>(results));
            }
            catch (Exception ex)
            {
                return InternalServerError(ex);
            }

        }

        [Route("{id:int}")]
        public async Task<IHttpActionResult> Get(string moniker,int id, bool includeSpeakers)
        {

            try 
            {
                var result = await _repositiry.GetTalkByMonikerAsync(moniker, id, includeSpeakers);
                if (result == null) return NotFound();

                return Ok(_mapper.Map<TalkModel>(result));
            }

            catch(Exception ex)
            {
                return InternalServerError(ex);

            }

        }

    }
}

这个问题是当我运行下面的URL时,它会返回未找到的

代码语言:javascript
复制
 http://localhost:6600/api/camps/ATL2018/talks/1

有一个关于Id 1的谈判,问题似乎是它甚至没有击中[Route("{id:int}")],因为我对它设置了一个断点,并且它返回时没有碰到断点就没有找到。

如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-08 14:40:33

在您的第二个Get中,您的参数不在您的路由中提供,也没有设置为可选。我不确定您的问题是否来自那里,但我认为定义第二个端点的方式可能会导致路由问题,因为您没有提供所有的输入are。

代码语言:javascript
复制
[Route("{id:int}")]
public async Task<IHttpActionResult> Get(string moniker,int id, bool includeSpeakers = false)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64739223

复制
相关文章

相似问题

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