0

我在这里有某人的代码,但我最不理解控制器上的“空”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 端点而不更改现有代码?

4

1 回答 1

0

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

尝试将您的路线更改为

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

编辑

或者尝试将网址更改为...

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

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

于 2015-07-07T09:25:43.920 回答