我有一个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")
};
}
}
任何指针都会很棒,谢谢。
答案 0 :(得分:0)
我看不出为什么你的/Docs
路线无法正常工作,但可能没有正确注册。查看configuration code的documentation of this Web API sample web site。这个网站集成了ASP.NET MVC和Web API功能集成到一个项目中。它使用ASP.NET MVC区域,但即使您不使用区域,路由代码也应相似。
答案 1 :(得分:0)
我最终走上了使用NuGet包切换到使用AttributeRouting的路线(没有双关语):
Install-Package AttributeRouting.Webapi
切换到此,我没有回头。非常好的路由解决方案。