我这里有人的代码,我不理解它首先是控制器上的"空" 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属性是绝对的——除非你在路由中指定它(或者在控制器级别设置路由前缀),否则它不会使用控制器名。
尝试将路由更改为
[Route("TestAccess/FindProducts/{country}/{brandlist}/product/{databaseID:int}")]
编辑或者尝试将url更改为…
http://localhost/de/2/product/5
或可能http://localhost/TestService/de/2/product/5