9

Visual Studio 2012 に WebApi プロジェクトがあります。テンプレートから作成し、NuGet を使用して HelpPage に追加しました。以下は私の例です。

HierarchyController.cs

public class HierarchyController : ApiController
{
    [ActionName("DefaultAction")]
    public List<Hierarchy> Get([FromUri]List<Guid> guid)
    {...}

    [HttpGet]
    public List<Hierarchy> Children([FromUri]List<Guid> guid)
    {...}

    [HttpGet]
    public List<Hierarchy> Descendants([FromUri]List<Guid> guid)
    {...}

    [ActionName("DefaultAction")]
    public HttpResponseMessage Post([FromBody]List<Hierarchy> hierarchies)
    {...}

    [ActionName("DefaultAction")]
    public HttpResponseMessage Delete([FromUri]List<Guid> guid)
    {...}
}

WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "ActionApi",
            routeTemplate: "api/{controller}/{action}/{guid}"
        );
        config.Routes.MapHttpRoute(
            name: "GuidApi",
            routeTemplate: "api/{controller}/{guid}",
            defaults: new { action = "DefaultAction", guid = RouteParameter.Optional }
        );
    }
}

.../help の結果

階層

API -------------------------- 説明

GET api/Hierarchy-------GUID ごとに階層を取得します

POST api/Hierarchy-----ドキュメントはありません。

DELETE api/Hierarchy -- 階層を削除します

ヘルプページには両方の「アクション」機能がありません。私が見逃しているものはありますか?

また、実際にはすべてが正しく機能しますが、すべてを表示するヘルプ ページだけが問題です。

サブ質問:

また、二次的な質問として、次のような関数ごとに xml コメントを定義しました。

/// <summary>
/// Deletes Hierarchy(s)
/// </summary>
/// <param name="guid">List of Hierarchies</param>
/// <returns>HttpResponseMessage</returns>

それらはすべてVS2012で入力///してからセクションに入力するだけで自動生成されましたが、投稿のヘルプページセクションには常に「ドキュメントがありません」と表示されます。これは、タブの下に表示される問題application/x-www-form-urlencoded(フォーマッター 'JQueryMvcFormUrlEncodedFormatter' エラーを使用できません) を修正していないためですか?

4

1 に答える 1

10

最初の質問について:
List<Guid> FromUri で装飾されていても、期待どおりにモデルにバインドすることはできません。これは最近修正されたバグで、以前のリリース ビットを使用しているため、これを確認できない可能性があります。[FromUri]List<Guid> guidlet's say のすべての出現を変更することで、私が何を意味するかを見ることができますstring guid。これで、ヘルプ ページにすべてのルートが表示されるはずです。ちなみに、ApiExplorer は各ルートを探索し、各ルートについて、そのルートから到達可能なすべてのコントローラーを探索します。したがって、表示される結果は驚くべきものになる可能性がありますが、正しいです...参考までに。

2 番目の質問について:
アクションに関するドキュメントは、プロジェクトのコンパイル時に生成されるドキュメント ファイルから取得されます。次のようにして有効にできます。ビルド | 出力 | 「Xml ドキュメント ファイル」を確認してください

ファイル 'Areas\HelpPage\App_Start\HelpPageConfig.cs' の次の行のコメントを外し、ドキュメント ファイルの場所への適切なパスを設定します。

//// Uncomment the following to use the documentation from XML documentation
//config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
于 2013-06-07T20:20:20.307 に答える