Пишем код

Заметки о .net разработке

Баг в help-page для WebAPI

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

Как известно, в ASP.Net MVC4 одной из главных появившихся фишек стал WebAPI.

Вместе с обновлением Web Tools 2012.2, вышедшем, как ни странно, в 2013, Майкрософт добавил к WebAPI интересную функцию — генерацию страницы помощи (help-page) с описанием вашего API в человеко-читаемом виде, и даже с примерами в виде xml и json. Большой плюс этой страницы в том, что информацию и описание API можно брать прямо из xml-комментариев к методам API-контроллера

Сегодня, однако, я натолкнулся на досадную ошибку в работе этой самой страницы помощи:
для метода вида

<br />
    /// </p>
<summary>
    /// description<br />
    /// </summary>
<p>    [HttpGet]<br />
    public string Tst([FromUri] TstModel filter)<br />
    {<br />
        return null;<br />
    }<br />

Проблема, как оказалось, была в том, что TstModel я, как водится, объявил вложенным классом (nested class) в самом контроллере. Из-за этого help page слегка потерял голову и необходимой документации не увидел :)

Для интересующихся и/или столкнувшихся с той же самой проблемой, фикс прост:
XmlDocumentationProvider.GetTypeName

<br />
line 109: return type.FullName.Replace("+", "."); //was: return type.FullName<br />
line 101: string typeName = genericType.FullName.Replace("+", "."); //was: string typeName = genericType.FullName<br />

Может, кто подскажет, куда можно послать по этому поводу bug-report? :)
Кроме как через nuget письмом автору Microsoft.AspNet.WebApi.HelpPage — других вариантов не найдено :)

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

Written by Shaddix

Март 14th, 2013 at 10:11 пп

Posted in .net,web

3 комментария to 'Баг в help-page для WebAPI'

Subscribe to comments with RSS or TrackBack to 'Баг в help-page для WebAPI'.

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

  2. gandjustas

    14 Мар 13 at 23:24

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

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

    Shaddix

    15 Мар 13 at 10:21

Leave a Reply