asp.net-mvc – 找不到与Web API中的请求URI匹配的HTTP资源

我已经配置我的WebApiConfig像这样:

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

我有一个方法接受一个参数。访问URI是http:// localhost:8598 / api / WebApi / GetLocationCategory / 87。

这给我一个错误:没有找到匹配请求URI’http:// localhost:8598 / api / WebApi / GetLocationCategory / 87’的HTTP资源。

控制器:

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;
}
尝试将Controller方法更改为

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;
}

更改只是,将输入参数从CatId更改为id ….它适用于我很多次..

编辑:

它很长时间,当我回头我认为我知道原因现在。字像Jared是正确的,这是与我们指定的路由。如果我有一个路由(默认)为:

routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );

我的URL是/ MyController / GetLocationCategory / 123,它将等同于/ MyController / GetLocationCategory?id = 123。

类似地,如果我想更改我的参数名称为Id说为CatId,那么我需要更改查询字符串参数(我调用我的Controller Action会改变的方式)。现在是:

/ MyController / GetLocationCategory?CatId = 123

翻译自:http://stackoverflow.com/questions/15715744/no-http-resource-was-found-that-matches-the-request-uri-in-web-api

转载注明原文:asp.net-mvc – 找不到与Web API中的请求URI匹配的HTTP资源