在控制器上找不到 RoutePrefix 为空的路由

Route is not found with empty RoutePrefix on controller

我这里有一些代码,但我不明白控制器上的 "empty" RoutePrefix。

我在浏览器中这样调用url:

http://localhost/TestService/TestAccess/FindProducts/de/2/product/5

我收到此控制器 + 操作的 404:

[RoutePrefix("")]
public class TestAccessController : ApiController
{

    [Route("{country}/{brandlist}/product/{databaseID:int}")]
    [HttpGet]
    public async Task<IHttpActionResult> FindProducts(String country, String brandlist, int databaseID)
    {
        ...
    }
}

即路由设置:

 config.MapHttpAttributeRoutes();
 config.Routes.MapHttpRoute(name: "Default", routeTemplate: "{controller}" );

我必须在浏览器 url 栏中输入什么路径才能在不更改现有代码的情况下触发我的 FindProducts 端点?

路由属性是绝对的 - 它不采用控制器名称,除非您在路由中指定它(或在控制器级别设置路由前缀)。

尝试将路线更改为

[Route("TestAccess/FindProducts/{country}/{brandlist}/product/{databaseID:int}")]

编辑

或者尝试将 url 更改为...

http://localhost/de/2/product/5

或者可能 http://localhost/TestService/de/2/product/5