Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 未在webapi中解决Get方法冲突_Asp.net_Asp.net Mvc_Rest_Asp.net Web Api - Fatal编程技术网

Asp.net 未在webapi中解决Get方法冲突

Asp.net 未在webapi中解决Get方法冲突,asp.net,asp.net-mvc,rest,asp.net-web-api,Asp.net,Asp.net Mvc,Rest,Asp.net Web Api,MoviesController中的webapi get方法是 // GET api/movies /// <summary> /// Returns the sorted list of movies /// </summary> /// <returns>Collection of Movies</returns> public IEnumerable<Mov

MoviesController中的webapi get方法是

// GET api/movies
        /// <summary>
        /// Returns the sorted list of movies
        /// </summary>
        /// <returns>Collection of Movies</returns>
        public IEnumerable<Movie> Get()
        {
            return repository.GetMovies().OrderBy(c => c.Title);
        }

        /// <summary>
        /// Returns an individual movie
        /// </summary>
        public Movie Get(int movieId)
        {
            var movie = repository.GetMovieById(movieId);
            if (movie == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return movie;
        }

我面临的问题是每次调用Get()时都会遇到。不会调用Id为的Get方法。我尝试了各种解决方案,但都不适用于我。

再制作一条自定义路线,如图所示:

config.Routes.MapHttpRoute(
     name: "MyRoute",
     routeTemplate: "api/{controller}/{action}/{movieId}",
     defaults: new { movieId = "0" }  //instead of default movieid '0' you can specify as per your requirement.
   );

,然后只调用id为的Get。我通常调用Get w/o参数GetAll,在我看来,这实际上是一个更好的名称,因为它反映了该方法的实际操作。我个人尽量避免弄乱路由,除非我真的必须这样做。@mmeasor..如果自定义路由是以正确的方式创建的,那么默认路由将不会产生任何问题。将默认值设置为零将导致异常,我已经完成了这个config.routes.maphttroute(名称:“DefaultApiWithMovieId”,routeTemplate:“api/{controller}/{action}/{movieId}”,默认值:new{movieId=RouteParameter.Optional});config.Routes.maphttroute(名称:“DefaultApi”,routeTemplate:“api/{controller}/{id}”,默认值:new{id=RouteParameter.Optional});@little..我认为异常是由
Get
方法而不是路由引发的。您如何使用id调用方法?发布一个示例URL?我得到了答案,方法参数名称是movieId,在webapiconfig中它是唯一的id。我已经使用movieId更改了id,并像routetemplate那样更新了routetemplate:“api/{controller}/{action}/{movieId}”,只需将您的答案与我的答案路由模板进行比较。每当您使用相同的url调用任何其他方法时,您都必须将参数名称指定为movieid。是的,我同意Mairaj。与其弄乱默认路由,不如创建一个自定义路由,如我的答案所示。
config.Routes.MapHttpRoute(
     name: "MyRoute",
     routeTemplate: "api/{controller}/{action}/{movieId}",
     defaults: new { movieId = "0" }  //instead of default movieid '0' you can specify as per your requirement.
   );