Asp.net web api 无法在控制台应用程序中读取Sitecore配置
我正在创建web api,如下所示: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(
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中所说的那样进行了修改。