0

我有一个 WebAPI 项目,它还使用 MCV.Explorer 库提供了一个文档页面,我无法理解如何向该控制器添加路由。

Api 控制器使用此路由按预期工作:

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

我在 API 应用程序的“Docs”目录中有一个 docs 控制器,如下所示:

[System.Web.Http.AllowAnonymous]
public class DocsController : Controller
{
  [System.Web.Mvc.HttpGet]
  public ActionResult Index()
  {
    var apiExplorer = GlobalConfiguration.Configuration.Services.GetApiExplorer();
    return View(apiExplorer);
  }
}

我正在尝试通过以下方式路由到它:

routes.MapRoute(
  name: "Docs",
  url: "Docs/",
  defaults: new { controller = "Docs", action = "Index" }
);

该站点只是错误地抱怨没有启用目录浏览。我猜由于控制器类不在 Controllers 目录中而发生了一些事情,但我不确定这方面。

我在 Home ApiController 上也有一个简单的方法(索引),目前返回几个链接。您将如何设置路由来处理 ApiController 的 home\index 路由?

[System.Web.Http.AllowAnonymous]
public class HomeController : ApiController
{
  [HttpGet]
  public Link[] Index()
  {
    return new Link[] 
    { 
      new SelfLink(Request.RequestUri.AbsoluteUri, "mood-api-root"),
      new Link("auth", @"Account/Login/", "authenticate")
    };
  }
}

任何指针都会很棒,谢谢。

4

2 回答 2

0

我最终选择了使用 NuGet 包切换到使用 AttributeRouting 的路线(没有双关语):

Install-Package AttributeRouting.Webapi

切换到这个,我没有回头。非常好的路由解决方案。

于 2012-11-15T20:36:27.810 回答
0

我不明白为什么您的/Docs路线无法正常工作,但很可能是没有正确注册。查看此 Web API 示例网站文档配置代码。该网站将 ASP.NET MVC 和 Web API 功能集成到一个项目中。它使用 ASP.NET MVC 区域,但即使您不使用区域,路由代码也应该相似。

于 2012-11-15T14:11:53.087 回答