C# 可以覆盖路由前缀

C# 可以覆盖路由前缀,c#,asp.net-web-api2,C#,Asp.net Web Api2,我有一个基本控制器,它执行很少的post和get提供,下面我给出了get的一个示例结构 [AxAuthorization(Resource = "Offers")] [RoutePrefix("api/offer/v2/offers")] public class OffersV2Controller : ApiController { [HttpGet] [Route("{id}", Name = "OffersGetById")] public async Task&

我有一个基本控制器,它执行很少的post和get提供,下面我给出了get的一个示例结构

[AxAuthorization(Resource = "Offers")]
[RoutePrefix("api/offer/v2/offers")]
public class OffersV2Controller : ApiController
{
    [HttpGet]
    [Route("{id}", Name = "OffersGetById")]
    public async Task<HttpResponseMessage> GetById([FromUri(Name = "id")]string OfferId)
    {
             ----
             -----
      }
}
[AxAuthorization(Resource=“Offers”)]
[RoutePrefix(“api/offer/v2/offers”)]
公共类报价器v2控制器:ApiController
{
[HttpGet]
[路由(“{id}”,Name=“OffersGetById”)]
公共异步任务GetById([FromUri(Name=“id”)]字符串)
{
----
-----
}
}
我们通过api/offer/v2/offers/id调用这个get方法,但是其他一些使用我们服务的消费者,他们喜欢调用api/v2/offers/id,我们有什么方法可以覆盖它吗?上面的代码是由产品生成的代码,我们不想修改路由前缀

[Route("api/v2/offer/test")]
[Route("api/offer/v2/test")]


在webapiConfig.cs

中,我不想修改这个类文件,我可以编写一些重写方法来完成吗?我不想添加多个路由,我想了解更多关于global.asax.cs的信息。你的意思是我需要添加,config.Routes.maphttprote(名称:“Offer”,routeTemplate:“Offers”);
     config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "route1",
            routeTemplate: "test/v2/Values",
            defaults: new { controller = "Values", action = "Get" });
        config.Routes.MapHttpRoute(
            name: "route2",
            routeTemplate: "v2/test/Values",
            defaults: new { controller = "Values", action = "Get" });


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