C# 尝试创建WebApi不起作用的链接

C# 尝试创建WebApi不起作用的链接,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,在我的项目中,我需要创建一个带有参数的链接,所以我是这样做的: var link = new Uri(Url.Link("GetUser", new { id = 1 })); static List<Students> std = new List<Students>() { new Students(){id = 1, Nome = "Nathiel"}, new Students() {id = 2, Nome = "Barros"} }; va

在我的项目中,我需要创建一个带有参数的链接,所以我是这样做的:

var link = new Uri(Url.Link("GetUser", new { id = 1 }));

static List<Students> std = new List<Students>()
{
    new Students(){id = 1, Nome = "Nathiel"},
    new Students() {id = 2, Nome = "Barros"}
};
var-link=newuri(Url.link(“GetUser”,new{id=1}));
静态列表std=新列表()
{
新生(){id=1,Nome=“Nathiel”},
新生(){id=2,Nome=“Barros”}
};
并告诉他们将接收id的方法:

[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;
}
[路由(“{id:int}”,Name=“GetUser”)]
[HttpGet]
公共异步任务Get(int-id)
{
var u=std.FirstOrDefault(x=>x.id==id);
var response=新的HttpResponseMessage();
response=Request.CreateResponse(HttpStatusCode.OK,u);
var task=new TaskCompletionSource();
task.SetResult(响应);
返回等待任务;
}

问题是,URL没有连接第二个路由“GetUser”,并且是这样的:
”http://localhost:52494/api/v1/Register/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
    }
}

你期望的URL是什么?知道了!谢谢,这是我的问题,
Name
属性用于识别实际路线。
[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
    }
}