9

WebAPI が使用するデフォルトの RouteConfiguration の代わりに AttributeRouting を使用するときに使用するデフォルトのコントローラーをどのように設定しますか。つまり、AttribteRouting を使用する場合、これは冗長であるため、コメント化されたコード セクションを削除します。

    public class RouteConfig
    {
       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 }
        //);

       }
     }

上記のセクションにコメントして webapi アプリを実行しようとすると、既定のホーム コントローラー/アクションが定義されていないため、次のエラーが発生します。 HTTP エラー 403.14 - 許可されていません Web サーバーは、このディレクトリの内容を一覧表示しないように構成されています。

ホームコントローラー/アクションの属性ルーティングを介してルートを指定するにはどうすればよいですか?

編集:コードサンプル:

 public class HomeController : Controller
{
    [GET("")]
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Help()
    {
        var explorer = GlobalConfiguration.Configuration.Services.GetApiExplorer();
        return View(new ApiModel(explorer));
    }
}
4

5 に答える 5

7

次のことを試しましたか。

//[RoutePrefix("")]
public class HomeController : Controller
{
    [GET("")]
    public ActionResult Index()
    {
        return View();
    }
}

これにより、url テンプレートが "" のコレクションにルートが追加され、コントローラーとアクションのデフォルトがそれぞれ "Home" と "Index" になります。

于 2013-04-28T22:23:14.160 に答える
5

これは私にとってはうまくいきました。Register()これをWebApiConfigクラスに追加します

config.Routes.MapHttpRoute(
                name: "AppLaunch",
                routeTemplate: "",
                defaults: new
                {
                    controller = "Home",
                    action = "Get"
                }
           );
于 2015-02-04T22:05:21.863 に答える
1

既にインストールされているAttributeRouting (ASP.NET Web API)と共にAttributeRouting (ASP.NET MVC)をインストールする必要があります。

MVC および Web API パッケージは無料のパッケージです。どちらも AttributeRouting.Core.* パッケージに依存しています。AR for MVC は Controller メソッドのルート用です。AR for Web API は、ApiController メソッドのルート用です。

于 2013-06-18T16:09:58.750 に答える