ASP.net Web API 2:如何在不传递Global.asax.cs文件中的参数的情况下调用WebApiConfig.Register

时间:2018-05-07 12:25:24

标签: asp.net-mvc asp.net-web-api static-methods

我正在使用ASP.Net WEB API 2.0创建restful服务。在查看代码时,下面是RouteConfig.cs类文件的代码:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

在Global.asax.cs文件中,RouteConfig类的RegisterRoutes方法被调用如下:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

我很想知道:

  1. 如何调用WebApiConfig.Register方法,因为我们没有明确传递任何参数。

1 个答案:

答案 0 :(得分:1)

GlobalConfiguration.Configure接受Action<HttpConfiguration>作为参数。这是“引用功能”的一种方式。在不使用WebApiConfig.Register的情况下使用()时,不是对函数的调用而是作为参数传递的委托。 WebApiConfig.Register具有正确的签名,即接受HttpConfiguration作为参数,这就是为什么您可以将其传递给GlobalConfiguration.Configure的原因。

稍后,框架将调用您传递的方法并提供参数。