2017-05-23 10 views
1

を働いていないので、私はこのようにやっていたとのリンクを作成しようとしていはWEBAPI私はパラメータを使用してリンクを作成する必要が私のプロジェクトで

[Route("{id:int}",Name = "GetUser")] 
[HttpGet] 
public async Task<HttpResponseMessage> Get(int id) 
{ 
    var u = std.FirstOrDefault(x => x.id == id); 

    var response = new HttpResponseMessage(); 
    response = Request.CreateResponse(HttpStatusCode.OK, u); 

    var task = new TaskCompletionSource<HttpResponseMessage>(); 
    task.SetResult(response); 
    return await task.Task; 
} 

問題は、URLが2番目のルート「GetUser」を連結せず、次のようになることです。"http://localhost:52494/api/v1/Register/1"

+0

あなたが期待しているURLとは何ですか、それ含めるURLにGetUserをしたい場合は? –

答えて

1

ルートプレフィクスがapi/v1/Register

[RoutePrefix("api/v1/Register")] 
public class RegisterController : ApiController { 
    [HttpGet] 
    [Route("{id:int}",Name = "GetUser")] //Matches GET api/v1/Register/1 
    public async Task<IHttpActionResult> Get(int id) { 
     //...code removed for brevity 
    } 
} 

であると仮定すると、そのは仕様です。

ルート名は、ルートを生成するときに使用するルートテンプレートを識別するために使用されます。

あなたがして、ルートテンプレート

[RoutePrefix("api/v1/Register")] 
public class RegisterController : ApiController { 
    [HttpGet] 
    [Route("GetUser/{id:int}",Name = "GetUser")] //Matches GET api/v1/Register/GetUser/1 
    public async Task<IHttpActionResult> Get(int id) { 
     //...code removed for brevity 
    } 
} 
+1

ありがとう、それは私の問題だった、 'Name'プロパティは実際のルートを識別することです。 –

関連する問題