指定WebApi在匹配请求时仅使用Route

时间:2017-03-01 15:33:51

标签: .net asp.net-web-api routes

我有一个.NET WebApi,其[Route("file/{fileId}")]

问题是以下Uri与此路线匹配的原因:

http://localhost:52052/file/Info?fileId=4eb335ac-dc6b-4fd9-a6e1-1ca83d931b77

默认路线为:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "{controller}/{action}/{id}",
    defaults: new { action = "get", id = RouteParameter.Optional }
);

1 个答案:

答案 0 :(得分:0)

您可以在VirtualBox here中了解路线,有一个关于路线约束的部分,并附有很好的示例。

  

以下Uri为何与此路线匹配:

答案取决于你的行动方法的样子。

例如,如果是这样的话:

Web API 2

然后[Route("file/{fileId}")] public HttpResponseMessage Get(string fileId) 将匹配此路线,/file/Info?fileId=4eb335ac-dc6b-4fd9-a6e1-1ca83d931b77的值将等于fileId

如果是这样的话:

"Info"

然后[Route("file/{fileId}")] public HttpResponseMessage Get(Guid fileId) 与此路线不匹配,但/file/Info?fileId=4eb335ac-dc6b-4fd9-a6e1-1ca83d931b77 将匹配