Баг в help-page для WebAPI

Как известно, в 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 — других вариантов не найдено :)

Опубликовать в Facebook
Опубликовать в Google Plus

3 комментария

  1. «TstModel я, как водится, объявил вложенным классом (nested class) в самом контроллере». Я не спец в MVC, но вроде так быть не должно.

  2. @gandjustas: меня уже направили в похожее место http://aspnetwebstack.codeplex.com/workitem/list/basic :)

    @Артем: по фэн-шую да, модельки должны лежать в папке Models/ControllerName/blablabla. Но если эта моделька генерится прямо в экшене контроллера (нет сложной логики), то лично мне часто удобнее видеть модель рядом с экшеном.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *