我有一个通过OWIN中间件托管的Web API 2项目。一切都运行得很好,我可以按预期调用我的API。但是,我的WebApiConfig定义了默认路由,如下所示:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
因此,我必须使用类似于/api/values/dosomething
这对我有用,直到我决定记录我的API。为此,我首先尝试使用不起作用的WebAPI Help Page package。然后我想我应该尝试Swashbuckle Swagger并看看这是否有助于我完全避免这个问题,但不幸的是,在这两种情况下我都遇到了同样的错误:
路线模板分隔符' /'不能出现 连续。它必须由参数或文字分隔 值。参数名称:routeTemplate
在尝试了一些事情之后,结果发现当更改路径模板并删除{action}
部分时,错误消失了。但是,我无法真正做到这一点,因为整个项目都假定URL中包含动作方法名称。
所以无论如何,我想知道以下内容:
提前致谢!
答案 0 :(得分:5)
我收到了同样的问题。以下是我的工作代码。
[RoutePrefix("api/User")]
public class UserController : ApiController
{
[Route("login")]
public IHttpActionResult Get()
{ }
}
当我从
方法之前改变路线时[Route("login")]
public IHttpActionResult Get()
{ }
到
[Route("/login")]
public IHttpActionResult Get()
{ }
我得到了同样的错误。
如果您在控制器的任何方法之前添加额外的 /
(如果第一次没有调用它),它将会生成。
我不确定你的病情。如果有人得到帮助,我会分享我的情况。