0

MCV.Explorerライブラリを使用してドキュメントページも提供するWebAPIプロジェクトがあり、このコントローラーにルートを追加する方法を理解できません。

Apiコントローラーは、次のルートで期待どおりに機能しています。

routes.MapHttpRoute(
  name: "DefaultApi",
  routeTemplate: "{controller}/{id}",
  defaults: new { id = RouteParameter.Optional }
);

APIアプリケーション内の「Docs」ディレクトリ内に次のようなドキュメントコントローラがあります。

[System.Web.Http.AllowAnonymous]
public class DocsController : Controller
{
  [System.Web.Mvc.HttpGet]
  public ActionResult Index()
  {
    var apiExplorer = GlobalConfiguration.Configuration.Services.GetApiExplorer();
    return View(apiExplorer);
  }
}

そして、私はそれにルーティングしようとしています:

routes.MapRoute(
  name: "Docs",
  url: "Docs/",
  defaults: new { controller = "Docs", action = "Index" }
);

このサイトは、ディレクトリブラウジングが有効になっていないというエラーを表示します。Controllersディレクトリにコントローラークラスがないために何かが起こっていると思いますが、その点についてはよくわかりません。

また、Home ApiControllerには、現時点でいくつかのリンクを返す単純なメソッド(Index)があります。ApiControllerのhome\indexルートを処理するルートをどのように設定しますか?

[System.Web.Http.AllowAnonymous]
public class HomeController : ApiController
{
  [HttpGet]
  public Link[] Index()
  {
    return new Link[] 
    { 
      new SelfLink(Request.RequestUri.AbsoluteUri, "mood-api-root"),
      new Link("auth", @"Account/Login/", "authenticate")
    };
  }
}

どんなポインタでも素晴らしいでしょう、ありがとう。

4

2 に答える 2

0

ルートが正しく機能していない理由はわかりません/Docsが、正しく登録されていない可能性があります。このWebAPIサンプルWebサイトのドキュメントについては、構成コードを参照してください。このWebサイトは、ASP.NETMVCとWebAPIの両方の機能を1つのプロジェクトに統合しています。ASP.NET MVCエリアを使用しますが、エリアを使用しない場合でもルーティングコードは類似している必要があります。

于 2012-11-15T14:11:53.087 に答える
0

NuGetパッケージを使用してAttributeRoutingを使用するように切り替えるというルート(しゃれなし)をたどることになりました。

Install-Package AttributeRouting.Webapi

これに切り替えて、振り返りませんでした。ルーティングに対する本当に素晴らしいソリューション。

于 2012-11-15T20:36:27.810 に答える