1

WebプロジェクトにAttributeRoutingとWebApiを実装しました。そして、私はアクションのようhttp://localhost/apis/test?adminId=yyyなURLをルーティングしようとします。GetSomeInfoしかし、私はいくつかの問題に遭遇します。URLhttp://localhost/apis/testhttp://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にルーティングできることがわかりました。パラメータのないGetSomeInfoURLはにルーティングされます。それはまさに私が欲しいものです。私の質問は、なぜとが機能しないのですか?http://localhost/api/SampleGetEntityRoutePrefixFromUri

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

1 に答える 1

1

これは、global.asax.cs でさらにルートを定義する必要があるためです。これを参照してください。ASP.NET Web API で複数の GET メソッドを使用する単一のコントローラー

于 2013-01-03T12:09:36.177 に答える