Как известно, в ASP.Net MVC4 одной из главных появившихся фишек стал WebAPI.
Вместе с обновлением Web Tools 2012.2, вышедшем, как ни странно, в 2013, Майкрософт добавил к WebAPI интересную функцию — генерацию страницы помощи (help-page) с описанием вашего API в человеко-читаемом виде, и даже с примерами в виде xml и json. Большой плюс этой страницы в том, что информацию и описание API можно брать прямо из xml-комментариев к методам API-контроллера
Сегодня, однако, я натолкнулся на досадную ошибку в работе этой самой страницы помощи:
для метода вида
/// <summary> /// description /// </summary> [HttpGet] public string Tst([FromUri] TstModel filter) { return null; }
Проблема, как оказалось, была в том, что TstModel я, как водится, объявил вложенным классом (nested class) в самом контроллере. Из-за этого help page слегка потерял голову и необходимой документации не увидел :)
Для интересующихся и/или столкнувшихся с той же самой проблемой, фикс прост:
XmlDocumentationProvider.GetTypeName
line 109: return type.FullName.Replace("+", "."); //was: return type.FullName line 101: string typeName = genericType.FullName.Replace("+", "."); //was: string typeName = genericType.FullName
Может, кто подскажет, куда можно послать по этому поводу bug-report? :)
Кроме как через nuget письмом автору Microsoft.AspNet.WebApi.HelpPage — других вариантов не найдено :)
«TstModel я, как водится, объявил вложенным классом (nested class) в самом контроллере». Я не спец в MVC, но вроде так быть не должно.
http://aspnet.codeplex.com/workitem/list/basic
@gandjustas: меня уже направили в похожее место http://aspnetwebstack.codeplex.com/workitem/list/basic :)
@Артем: по фэн-шую да, модельки должны лежать в папке Models/ControllerName/blablabla. Но если эта моделька генерится прямо в экшене контроллера (нет сложной логики), то лично мне часто удобнее видеть модель рядом с экшеном.