首页 文章

将操作添加到默认路由时,路径模板分隔符'/'不能连续出现

提问于
浏览
1

我有一个通过OWIN中间件托管的Web API 2项目 . 一切都运行得很好,我可以按预期调用我的API . 但是,我的WebApiConfig定义了默认路由,如下所示:

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

因此,我必须使用类似于以下的URL调用我的API: /api/values/dosomething

这对我有用,直到我决定记录我的API . 为此,我首先尝试使用无效的WebAPI Help Page package . 然后我想我应该尝试Swashbuckle Swagger,看看这是否有助于我完全避免这个问题,但不幸的是,在这两种情况下我都遇到了同样的错误:

路径模板分隔符'/'不能连续出现 . 它必须由参数或文字值分隔 . 参数名称:routeTemplate

在尝试了一些事情后,事实证明,当更改路径模板并删除 {action} 部分时,错误消失了 . 但是,我不能真的这样做,因为整个项目假设URL包含其中的操作方法名称 .

所以无论如何,我想知道以下内容:

  • 为什么这首先发生?

  • 有没有办法修改这种行为?

提前致谢!

1 回答

  • 5

    我得到了同样的问题 . 以下是我的工作代码 .

    [RoutePrefix("api/User")]
    public class UserController : ApiController
    {
        [Route("login")]
        public IHttpActionResult Get()
        {       }
    }
    

    当我在方法之前改变路线时

    [Route("login")]
    public IHttpActionResult Get()
    {       }
    

    [Route("/login")]
    public IHttpActionResult Get()
    {       }
    

    我得到了同样的错误 . 如果在控制器的任何方法之前添加额外的 / (如果第一次没有调用它),它将生成 .

    我不确定你的病情 . 如果有人得到帮助,我会分享我的情况 .

相关问题