为什么我的消息处理程序即使在Web API中未定义时也会运行?

时间:2012-12-13 22:22:00

标签: asp.net-web-api

我的配置中有以下设置:

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

如果我在 api / auth 上向网址发布任何内容,则邮件处理程序仍会运行并检查Auth-Token标头。这有什么原因吗?我是否应该在WebApi路由的配置中进行更改?在向auth控制器发出请求时,我显然不希望在标头上有任何auth令牌,因为此时我正在尝试检索令牌以便在其他控制器上使用。

1 个答案:

答案 0 :(得分:2)

您的最上面的路线永远不会匹配,因为没有迹象表明需要哪个控制器。默认添加控制器名称。 (如果不需要,请删除ID选项。)

所以:

routes.MapHttpRoute(
        name: "NoAuthRequiredApi",
        routeTemplate: "api/auth/",
        defaults: new { Controller = "Auth" }
    );