27

http://myserverヘルプ ページにアクセスして、デフォルトのホームページとして取得できるようにしたいので、ゲストが最初にhttp://myserver表示するのはヘルプ ページです。

次のようにデフォルトルートを設定しています。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
}

次に、ヘルプ ページ エリアの登録を次のように設定します。

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "HelpPage_Default",
        "doc/{action}/{apiId}",
        new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });

    HelpPageConfig.Register(GlobalConfiguration.Configuration);
}

RouteConfig を に変更すると、次のcontrollerよう"Help"になります。

ビュー「インデックス」またはそのマスターが見つからないか、検索された場所をサポートするビュー エンジンがありません

ヘルプ ページのルートを"{controller}/{action}/{apiId}"AttributeRoutes に変更すると、機能しなくなります。

ASP.NET ヘルプ ページを既定のホーム ページにする簡単な方法はありますか?

4

2 に答える 2

52

これは、次の RouteConfig で実現しました。また、ASP.Net ヘルプ ページを使用して、インライン XML コメントからドキュメントを自動生成しています。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // By default route the user to the Help area if accessing the base URI.
        routes.MapRoute(
            "Help Area",
            "",
            new { controller = "Help", action = "Index" }
        ).DataTokens = new RouteValueDictionary(new { area = "HelpPage" });
    }
}

また、API メソッドで属性ルーティングを個別に使用しているため、このクラスには他のルーティングがないことにも言及する必要があります。

于 2013-10-25T13:55:31.007 に答える
21

ルートを追加する場所を検索する場合、現在のバージョンの WebApi と NuGet パッケージでは、NuGet によって追加された Area フォルダーで "HelpPageAreaRegistration" という名前のファイルを検索する必要があります。

これは、WebApi のヘルプ ページにデフォルトの Web ページがあるようにコーディングされた後の私のものです。

public class HelpPageAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "HelpPage";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "HelpPage_Default",
            "Help/{action}/{apiId}",
            new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });
        context.MapRoute(
            "Help Area",
            "",
            new { controller = "Help", action = "Index" }
            );
        HelpPageConfig.Register(GlobalConfiguration.Configuration);
    }
}
于 2014-06-20T19:17:30.450 に答える