Asp.net web api 无法在控制台应用程序中读取Sitecore配置

Asp.net web api 无法在控制台应用程序中读取Sitecore配置,asp.net-web-api,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(

我正在创建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

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

public class ProductsController : ApiController
{
  //Get Products Prices 

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

(二)

请纠正我的错误。

开始读这个

您必须使用
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 url中使用id,这种情况下url会更整洁。

我在webapi url中做了如下更改。config.Routes.MapHttpRoute(名称:“Default”,routeTemplate:“api/{controller}/{action}/{ProductName}”,默认值:new{controller=“Products”,action=“GetProductPrices”,ProductName=RouteParameter.Optional});我按照您在webapiconfig中所说的那样进行了修改。