加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:53:27 所属栏目:asp.Net 来源:网络整理
导读:我已经配置我的WebApiConfig像这样: public static void Register(HttpConfiguration config){ config.Routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional } );} 我
我已经配置我的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读