c# - 从 Web API url 中删除 "api"前缀

标签 c# asp.net asp.net-web-api asp.net-mvc-routing

我有一个 API Controller

public class MyController : ApiController { ... }

默认情况下,它映射到 URL mysite/api/My/Method,我希望它的 URL 不带“api”前缀:mysite/My/Method

设置 Controller 属性 [RoutePrefix("")] 对我没有帮助。

还有其他方法可以实现吗?

最佳答案

默认注册通常在 WebApiConfig 中找到并且看起来像这样

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

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

您需要在基于约定的设置中编辑routeTemplate

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

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

请注意,如果此项目与 MVC 共享,则 api 前缀的原因是为了避免两个框架之间的路由冲突。如果 Web API 是唯一使用的东西,那么应该没有问题。

关于c# - 从 Web API url 中删除 "api"前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37772816/

相关文章:

c# - 关于使用任务队列进行并行网络获取的代码的问题

asp.net mvc javascript 回发

c# - 在 Web API 中 Controller 初始化之前执行一些操作(设置语言)

c# - 如何将 Json 参数绑定(bind)到 ASP.NET 中的 Web Api 参数?

c# - Oracle 和 SQL Server 数据集比较

c# - Java 中哪个最好;模拟接口(interface)还是模拟类?

c# - 使用 Exchange Web 服务 API 提取 Exchange 2007 公共(public)日历约会

c# - 登录失败远程调试作为 Azure 应用服务托管的 ASP.NET WebAPI 服务

c# - 滚动DataGrid时出现InvalidOperationException : The binding expression already belongs to a BindingGroup

c# - 为什么我不能在我的代码 asp.net c# 中使用来自 app_code 的代码文件