无法在控制台应用程序中读取Sitecore配置

时间:2013-10-17 06:06:50

标签: asp.net-web-api

我正在创建web api,如下所示:

public class ProductsController : ApiController
{
  //Get Products Prices 

    public string GetProductPrices(string ProductName)
    {
      //some method definition
    }
 }

我已经定义了webapiconfig如下。

 config.Routes.MapHttpRoute(
        name: "Default",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { controller = "Products", action = "ProductVariations", id = RouteParameter.Optional });

当我尝试从url调用web api时,它会返回错误400。

我按以下方式调用上述方法:

1)http://site.com/api/Products/apple-ipod-touch/GetProductPrices

2)http://site.com/api/Products/GetProductPrices/apple-ipod-touch

请纠正我的错误。

1 个答案:

答案 0 :(得分:0)

首先阅读此article

您必须使用ProductName创建路线,或者必须使用Id参数输入创建cotroller名称。您无法将ProductName路由映射到Id输入参数。

PS:请求api的第一种方式无效。你有一个路由,其中​​控制器名称在url中有第二个位置,它定义为不能在第三个位置,它不会与预定义路由匹配。

如果修改路线:

 config.Routes.MapHttpRoute(
    name: "Default",
    routeTemplate: "api/{controller}/{action}/{ProductName}",
    defaults: new { controller = "Products", action = "ProductVariations", ProductName = RouteParameter.Optional });

但最好在你的webapi网址中使用id,这个网址网址会更整洁。