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

Kas*_*sem 1 asp.net-web-api swagger asp.net-web-api-helppages asp.net-web-api2 swashbuckle

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

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

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

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

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

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

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

  1. 为什么这首先发生?
  2. 有没有办法修改这种行为?

提前致谢!

rez*_*e08 5

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

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

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

[Route("login")]
public IHttpActionResult Get()
{       }
Run Code Online (Sandbox Code Playgroud)

[Route("/login")]
public IHttpActionResult Get()
{       }
Run Code Online (Sandbox Code Playgroud)

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

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