将控制器放在API路径的哪个位置?

时间:2017-07-19 18:43:40

标签: c# asp.net-mvc

我在Application_Start中的global.asax.cs中调用了以下注册。

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

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

我是否需要将我的/ api特定控制器放在一个区域中,或者只要我从ApiController继承它就会“工作”? 通过工作我的意思是我的控制器将响应路径路径api / {controller} / ...

1 个答案:

答案 0 :(得分:-1)

阅读here以获得更好的线索。

将路由添加到Web窗体应用程序

在Web窗体应用程序中,您可以使用RouteCollection类的MapPageRoute(String,String,String)方法创建路径。 MapPageRoute方法创建一个Route对象并将其添加到RouteCollection对象。您可以在传递给MapPageRoute方法的参数中指定Route对象的属性。

通常,您在从Global.asax文件中的Application_Start事件的处理程序调用的方法中添加路由。此方法可确保应用程序启动时路由可用。它还使您可以在对应用程序进行单元测试时直接调用该方法。如果要在对应用程序进行单元测试时直接调用方法,则注册路由的方法必须是静态的(在Visual Basic中为Shared),并且必须具有RouteCollection参数。

以下示例显示了Global.asax文件中的代码,该文件添加了一个Route对象,该对象定义了两个名为action和categoryName的URL参数。具有指定模式的URL将定向到名为Categories.aspx的物理页。

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("",
        "Category/{action}/{categoryName}",
        "~/categoriespage.aspx");
}