Проблема соответствия URL WebAPI

Я реализовал AttributeRouting и WebApi в своем веб-проекте. И я пытаюсь направить URL, как http://localhost/apis/test?adminId=yyy в GetSomeInfo Действие. Но я сталкиваюсь с некоторыми проблемами, URL http://localhost/apis/test а также http://localhost/apis/test?adminId=yyy оба пути к действию GetEntity, Кажется, он не распознает параметр adminId, Он думал, что нет никаких параметров в URL. Так получается иди GetEntity Действие. Может кто-нибудь мне помочь? Благодарю.

То, что я сделал до сих пор, выглядит ниже, это не работает.

[RoutePrefix("apis/test")]
public class SampleController : ApiController
{


    [HttpGet]
    [GET("")]
    public string GetEntity([FromUri]string name = null, [FromUri]string id = null)
    {
        ....
    }

    [HttpGet]
    [GET("")]
    public string GetSomeInfo([FromUri]string adminId)
    {
        ....
    }

 }

отредактированный

Код карты маршрута в global.asax ниже. и я нашел URL http://localhost/api/Sample?adminId=2BD48CF9-95EB-48D2-A1B2-1AFA273E586D можно направить на GetSomeInfo Действие. URL http://localhost/api/Sample без каких-либо параметров маршрута к GetEntity, это именно то, что я хочу. Мой вопрос, почему RoutePrefix а также FromUri не работает?

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = UrlParameter.Optional }
            );


            routes.MapRoute(
               name: "Default",
               url: "{controller}/{action}/{id}",
               defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional }
           );

1 ответ

Потому что вам нужно определить дальнейшие маршруты в global.asax.cs. посмотрите это, Один контроллер с несколькими методами GET в ASP.NET Web API

Другие вопросы по тегам