Я внедрил систему управления версиями в свое приложение WebAPI и очень хотел бы, чтобы она работала с новым расширением страницы справки из Microsoft.
Microsoft.AspNet.WebApi.HelpPage
Проще говоря, я не знаю, как заставить их работать вместе. У меня есть 2 проекта:
- AdventureWorks.Api(основное приложение хоста/корня)
- AdventureWorks.Api.v1 (библиотека классов, содержащая первую версию API)
Управление версиями работает так, как ожидалось.
Я попытался установить пакет HelpPage в корневом приложении, и когда я перейду на страницу справки, похоже, что ни один из контроллеров не найден. Внутри я считаю, что он использует:
Configuration.Services.GetApiExplorer().ApiDescriptions
Это не возвращает никаких результатов, поэтому я получаю сообщение об ошибке.
Может ли кто-нибудь помочь мне в совместном использовании обоих этих пакетов?
Edit: Вначале я не был уверен, что это проблема маршрутизации, но последние комментарии, похоже, говорят о другом. Вот мой RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "SldExportAliasApi",
routeTemplate: "api/v{version}/sld-export/{id}",
defaults: new { id = RouteParameter.Optional, controller = "Export" }
);
routes.MapHttpRoute(
name: "LinkRoute",
routeTemplate: "api/v{version}/link/{system}/{deployment}/{view}",
defaults: new { controller = "Link" }
);
routes.MapHttpRoute(
name: "DefaultSubParameterApi",
routeTemplate: "api/v{version}/{controller}/{id}/{param}",
defaults: new { id = RouteParameter.Optional, param = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/v{version}/{controller}/{action}/{id}",
defaults: new { action = "Index", id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}