2

我的配置中有以下设置:

routes.MapHttpRoute("NoAuthRequiredApi", "api/auth/", new { id = RouteParameter.Optional } );
routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional }, null, new WebApiAuthenticationHandler());

如果我在api/auth的 url 上发布任何内容,消息处理程序仍会运行并检查 Auth-Token 标头。发生这种情况有什么原因吗?WebApi 路由的配置有什么我应该改变的吗?在向身份验证控制器发出请求时,我显然不希望标头上有任何身份验证令牌,因为那时我正在尝试检索令牌以在其他控制器上使用。

4

1 回答 1

2

您的最顶层路线永远不会被匹配,因为没有指示需要哪个控制器。添加控制器名称作为默认值。(如果不需要,则删除可选的 ID)。

所以:

routes.MapHttpRoute(
        name: "NoAuthRequiredApi",
        routeTemplate: "api/auth/",
        defaults: new { Controller = "Auth" }
    );
于 2012-12-14T09:18:32.213 回答