簡體   English   中英

Asp.Net WebApi 路由

[英]Asp.Net WebApi Routing

我有路由通用控制器方法的問題。 我有這樣的控制器類。

public abstract class ModelsController<T> : ApiController where T : IModel
{
    [GET("GetByName/{name:string}")]
    public T GetByName(string name)
    {
        return repository.GetByName(name);
    }
}

[RoutePrefix("Events")]
public class EventsController : ModelsController<IEventModel> { }

我想在 url 上有 api 方法

GET ~/api/public/Photos/GetByName/{name}

但網址是

GET ~/api/public/Photos?name={name}

我有什么錯? 像這樣進行路由的正確方法是什么?

使用[Route]屬性:

[HttpGet]
[Route("GetByName/{name:string}")]
public T GetByName(string name)
{
    return repository.GetByName(name);
}

WebApiConfig 中是否啟用了基於屬性的路由?

根據 Web API 2.2 文檔,您需要以下配置:

config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
public class CustomDirectRouteProvider : DefaultDirectRouteProvider
{
    protected override IReadOnlyList 
    GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
    {
        return actionDescriptor.GetCustomAttributes
        (inherit: true);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM