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

前端之家收集整理的这篇文章主要介绍了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,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

猜你在找的asp.Net相关文章