2

Controllers ディレクトリ内には、FeatureA と FeaturesB の 2 つのサブディレクトリがあります。

FeaturesA
      Service1Controller 
      Service2Controller 
      Service3Controller

FeaturesB 
      Service4Controller
      Service5Controller
      Service6Controller

次の URL 経由でこれらのサービスにアクセスできるように、2 つのルートを追加したいと考えています。

localhost/api/FeaturesA/....

localhost/api/FeaturesB/....

次のルート設定があります

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {

        config.Routes.MapHttpRoute(
           name: "FeaturesA",
           routeTemplate: "api/FeaturesA/{controller}/{id}",
           defaults: new { id = RouteParameter.Optional});

        config.Routes.MapHttpRoute(
           name: "FeaturesB",
           routeTemplate: "api/FeaturesB/{controller}/{id}",
           defaults: new { id = RouteParameter.Optional});

しかし、私はService1にアクセスできlocalhost/api/FeaturesA/Service1ますlocalhost/api/FeaturesB/Service1localhost/api/Service1

Service1 が からのみアクセスできるようにルートを設定するにはどうすればよいですかlocalhost/api/FeaturesA/Service1。同じことが他のすべてのコントローラーにも当てはまります。つまり、コントローラーのサブディレクトリに一致する URL からのみアクセスできるようにする必要があります。

4

1 に答える 1

3

これは、ルーティング制約が導入された目的とほとんど同じように思えます。単純なケースの場合は、組み込み型を使用して正規表現を追加し、コントローラー名と照合することができます。ただし、より複雑なケースについては、独自に作成できます。

Pinal Bhatt は、この件に関する一連の記事へのリンクを含む素敵なブログ投稿をここに掲載しています。

于 2013-03-19T13:39:05.737 に答える