没有HTTP资源发现,在网页API相匹配的请求URI [英] No HTTP resource was found that matches the request URI in Web API
问题描述
我已经配置我的WebApiConfig是这样的:
公共静态无效的注册(HttpConfiguration配置)
{
config.Routes.MapHttpRoute(
名称:DefaultApi
routeTemplate:API / {控制器} / {行动} / {ID}
默认:新{ID = RouteParameter.Optional}
);
}
我有一个接受一个参数的方法。在访问URI是的http://本地主机:8598 / API /的WebAPI / GetLocationCategory / 87
这给了我一个错误:无HTTP资源发现,请求URI相匹配的http://本地主机:8598 / API /的WebAPI / GetLocationCategory / 87
控制器:
公开的IEnumerable< LocationCategory_CLS> GetLocationCategory(INT CATID)
{
VAR LocCats =(LCT从在entities.tdp_LocationCategories加入LC在entities.tdp_LocationMaster上lct.FK_LocationID等于lc.LocationID哪里lct.IsApproved == 0安培;&安培; lct.FK_CategoryID == CATID选择新的{lc.LocationID,LC。 LOCATIONNAME})了ToList()。
清单< LocationCategory_CLS> LOC =新的List< LocationCategory_CLS>(); 的foreach(在LocCats VAR元素)
{
loc.Add(新LocationCategory_CLS
{
LocationID = element.LocationID,
LOCATIONNAME = element.LocationName
});
}
回禄;
}
试着改变你的控制器方法
公开的IEnumerable< LocationCategory_CLS> GetLocationCategory(INT ID)LT; - 更改
{
VAR LocCats =(LCT从在entities.tdp_LocationCategories加入LC在entities.tdp_LocationMaster上lct.FK_LocationID等于lc.LocationID哪里lct.IsApproved == 0安培;&安培; lct.FK_CategoryID == ID选择新的{lc.LocationID,LC。 LOCATIONNAME})了ToList()。
清单< LocationCategory_CLS> LOC =新的List< LocationCategory_CLS>(); 的foreach(在LocCats VAR元素)
{
loc.Add(新LocationCategory_CLS
{
LocationID = element.LocationID,
LOCATIONNAME = element.LocationName
});
}
回禄;
}
变化是唯一的,改变从 CATID
输入参数 ID
....它为我很多次..
修改
它的很长一段时间,当我回头看的的我觉得的我知道原因了。 的话像贾里德
是正确的,这一切都与我们指定路由做。如果我有一个路径(默认值)为:
routes.MapRoute(
默认,//路线名称
{控制器} / {行动} / {ID},// URL带参数
新{控制器=家,行动=索引,ID =} //参数默认
);
和我的网址 / myController的/ GetLocationCategory / 123
,这将等同于 / myController的/ GetLocationCategory?ID = 123
。
同样,如果我想改变我的参数名称编号说CATID,那么我需要更改查询字符串参数(我打电话给我的控制器操作会改变的方式)。现在是:
/ myController的/ GetLocationCategory?CATID = 123
I have configured my WebApiConfig like this:
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
I have one method which accepts one parameter. The accessing URI is http://localhost:8598/api/WebApi/GetLocationCategory/87
.
This gives me an error: No HTTP resource was found that matches the request URI 'http://localhost:8598/api/WebApi/GetLocationCategory/87'
Controller:
public IEnumerable<LocationCategory_CLS> GetLocationCategory(int CatID)
{
var LocCats = (from lct in entities.tdp_LocationCategories join lc in entities.tdp_LocationMaster on lct.FK_LocationID equals lc.LocationID where lct.IsApproved == 0 && lct.FK_CategoryID == CatID select new { lc.LocationID, lc.LocationName }).ToList();
List<LocationCategory_CLS> loc = new List<LocationCategory_CLS>();
foreach (var element in LocCats)
{
loc.Add(new LocationCategory_CLS
{
LocationID = element.LocationID,
LocationName = element.LocationName
});
}
return loc;
}
Try changing your Controller method as
public IEnumerable<LocationCategory_CLS> GetLocationCategory(int id) <-- Change
{
var LocCats = (from lct in entities.tdp_LocationCategories join lc in entities.tdp_LocationMaster on lct.FK_LocationID equals lc.LocationID where lct.IsApproved == 0 && lct.FK_CategoryID == id select new { lc.LocationID, lc.LocationName }).ToList();
List<LocationCategory_CLS> loc = new List<LocationCategory_CLS>();
foreach (var element in LocCats)
{
loc.Add(new LocationCategory_CLS
{
LocationID = element.LocationID,
LocationName = element.LocationName
});
}
return loc;
}
The change is only, changing input parameter from CatId
to id
.... It works for me many times..
Edit :
Its a long time when I look back I think I know the reason now. Words Like Jared
is correct, it's all to do with Routing which we specify. If I have a route(default) as :
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
And my URL is /MyController/GetLocationCategory/123
, it will be equivalent to /MyController/GetLocationCategory?id=123
.
Similarly, if I want to change my parameter name for Id to say CatId, then I need to change the query string parameter(the way I am calling my Controller Action would change). Which would now be :
/MyController/GetLocationCategory?CatId=123
这篇关于没有HTTP资源发现,在网页API相匹配的请求URI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!