第 2 レベルのドメイン名を特定のコントローラー インスタンスにバインドするチュートリアル
この記事では主に、Asp.net Core MVC の特定の コントローラー に第 2 レベルのドメイン名をバインドする方法を紹介します。それを必要とする友人はそれを参照できます。
アプリケーション シナリオ: エンタープライズ ポータルは、 Sina にはスポーツ、エンターテイメント チャンネルなど、さまざまなコンテンツを設定します。場合によっては、Sina Sports sports.sina.com.cn など、セクションごとに異なる第 2 レベルのドメイン名を設定する必要があります。
asp.net core mvc では、セクションの効果を実現したい場合、セクションごとに異なるコントローラーを作成できます (もちろん、他のテクノロジもあります。実装の品質についてはここでは説明しません)。この場合、たとえば、スポーツ コントローラを介してシステムにアクセスする場合、スポーツ チャネルに対応するコントローラは、SportController と呼ばれます。
上記のシナリオが完了したら、それを実装する方法を見てみましょう。
asp.net core mvc にはルーティング ルールの設定があります。設定は Startup.Configure メソッドにあります。具体的なコードは次のとおりです。
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}", defaults: new { area="admin"}); });
残念ながら、ドメイン名のサポートはサポートされていません。現時点では理解していますが、ご質問があれば修正してください)。 Router.MapRouter を通じてルーティング ルールを登録し、それらを RouteCollection に追加します。 リクエストが届くと、最初に一致する IRouter が見つかるまで、RouterCollection は登録されているすべての IRouter オブジェクトをループします。フレームワークはドメイン名設定ルールをサポートしていませんが、第 2 レベルのドメイン名決定ロジックを実装するために IRouter を実装できます。具体的な実装コードは次のとおりです。上記のコードはドメイン名の検出のみを確認しましたが、ドメイン名を特定のコントローラーに送信するには、この IRouter を登録するときにいくつかの記事を実行し、コードを直接入力する必要があります:
public class SubDomainRouter : RouteBase { private readonly IRouter _target; private readonly string _subDomain; public SubDomainRouter( IRouter target, string subDomain,//当前路由规则绑定的二级域名 string routeTemplate, RouteValueDictionary defaults, RouteValueDictionary constrains, IInlineConstraintResolver inlineConstraintResolver) : base(routeTemplate, subDomain, inlineConstraintResolver, defaults, constrains, new RouteValueDictionary(null)) { if (target == null) { throw new ArgumentNullException(nameof(target)); } if (subDomain == null) { throw new ArgumentNullException(nameof(subDomain)); } _subDomain = subDomain; _target = target; } public override Task RouteAsync(RouteContext context) { string domain = context.HttpContext.Request.Host.Host;//获取当前请求域名,然后跟_subDomain比较,如果不想等,直接忽略 if (string.IsNullOrEmpty(domain) || string.Compare(_subDomain, domain) != 0) { return Task.CompletedTask; } //如果域名匹配,再去验证访问路径是否匹配 return base.RouteAsync(context); } protected override Task OnRouteMatched(RouteContext context) { context.RouteData.Routers.Add(_target); return _target.RouteAsync(context); } protected override VirtualPathData OnVirtualPathGenerated(VirtualPathContext context) { return _target.GetVirtualPath(context); } }
最後に、スタートアップで実行できます。対応する登録ルールは次のとおりです:
public static class RouteBuilderExtensions { public static IRouteBuilder MapDomainRoute( this IRouteBuilder routeBuilder,string domain,string area,string controller) { if(string.IsNullOrEmpty(area)||string.IsNullOrEmpty(controller)) { throw new ArgumentNullException("area or controller can not be null"); } var inlineConstraintResolver = routeBuilder .ServiceProvider .GetRequiredService<IInlineConstraintResolver>(); string template = ""; RouteValueDictionary defaults = new RouteValueDictionary(); RouteValueDictionary constrains = new RouteValueDictionary(); constrains.Add("area", area); defaults.Add("area", area); constrains.Add("controller", controller); defaults.Add("controller", string.IsNullOrEmpty(controller) ? "home" : controller); defaults.Add("action", "index"); template += "{action}/{id?}";//路径规则中不再包含控制器信息,但是上面通过constrains限定了查找时所要求的控制器名称 routeBuilder.Routes.Add(new SubDomainRouter(routeBuilder.DefaultHandler, domain, template, defaults, constrains, inlineConstraintResolver)); return routeBuilder; } }
以上が第 2 レベルのドメイン名を特定のコントローラー インスタンスにバインドするチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windows がゲーム プラットフォームとして選ばれるようになったため、そのゲーム指向の機能を特定することがさらに重要になっています。その 1 つは、Windows 11 で Xbox One コントローラーを調整する機能です。組み込みの手動キャリブレーションを使用すると、ドリフト、ランダムな動き、またはパフォーマンスの問題を取り除き、X、Y、Z 軸を効果的に調整できます。利用可能なオプションが機能しない場合は、いつでもサードパーティの Xbox One コントローラー調整ツールを使用できます。確認してみましょう! Windows 11 で Xbox コントローラーを調整するにはどうすればよいですか?続行する前に、コントローラーをコンピューターに接続し、Xbox One コントローラーのドライバーを更新していることを確認してください。この作業中に、利用可能なファームウェアのアップデートもインストールします。 1. 風を利用する

PHP は非常に人気のあるプログラミング言語であり、CodeIgniter4 は一般的に使用される PHP フレームワークです。 Web アプリケーションを開発する場合、フレームワークを使用すると、開発プロセスのスピードアップ、コードの品質の向上、メンテナンス コストの削減が可能になり、非常に役立ちます。この記事ではCodeIgniter4フレームワークの使い方を紹介します。 CodeIgniter4 フレームワークのインストール CodeIgniter4 フレームワークは、公式 Web サイト (https://codeigniter.com/) からダウンロードできます。下

Laravelをゼロから学ぶ:コントローラーメソッド呼び出しの詳細解説 Laravelの開発において、コントローラーは非常に重要な概念です。コントローラーはモデルとビューの間のブリッジとして機能し、ルートからのリクエストを処理し、対応するデータを表示のためにビューに返す責任を負います。コントローラー内のメソッドはルートから呼び出すことができます。この記事では、コントローラー内のメソッドの記述方法と呼び出し方法を詳しく紹介し、具体的なコード例を示します。まず、コントローラーを作成する必要があります。 Artisan コマンド ライン ツールを使用して、

laravel では、コントローラー (Controller) は特定の機能を実装するために使用されるクラスであり、コントローラーは関連するリクエスト処理ロジックを別のクラスに結合できます。一部のメソッドは、特定の機能を実装するためにコントローラーに保存されます。コントローラーはルーティングを通じて呼び出され、コールバック関数は使用されなくなり、コントローラーは「app/Http/Controllers」ディレクトリに保存されます。

Laravel 学習ガイドでは、コントローラー メソッドの呼び出しは非常に重要なトピックです。コントローラーはルーティングとモデルの間のブリッジとして機能し、アプリケーションで重要な役割を果たします。この記事では、コントローラー メソッド呼び出しのベスト プラクティスを紹介し、読者の理解を助ける具体的なコード例を示します。まず、コントローラー メソッドの基本構造を理解しましょう。 Laravel では、コントローラー クラスは通常 app/Http/Controllers ディレクトリに保存され、各コントローラー クラスには複数のものが含まれます。

申し込み手順: 1. ドメイン名登録サービス Web サイトにアクセスし、アカウントを登録してログインします; 2. 「ドメイン名登録」サービスを選択し、登録したいセカンドレベル ドメイン名を入力し、[クエリ] をクリックします; 3.セカンドレベルドメイン名が登録されていない場合は、「今すぐ登録」ボタンをクリックして登録できます; 4. 登録情報ページで、ドメイン名の所有者の名前、連絡先番号、電子メールなどの情報を入力し、設定します。パスワード; 5. 支払い方法を確認し、支払いを完了します; 6. 正式な審査を待つには、通常 1 ~ 5 営業日かかります。

Yii フレームワークでは、コントローラーはリクエストの処理において重要な役割を果たします。通常のページ リクエストの処理に加えて、コントローラーを使用して Ajax リクエストを処理することもできます。この記事では、Yii フレームワークで Ajax リクエストを処理する方法を紹介し、コード例を示します。 Yii フレームワークでは、Ajax リクエストの処理は次の手順で実行できます。 最初の手順は、コントローラー (Controller) クラスを作成することです。 Yii フレームワークが提供する基本コントローラークラス yiiwebCo を継承できます。

Symfony フレームワークは、MVC (Model-View-Controller) アーキテクチャに基づいて設計された人気のある PHP フレームワークです。 Symfony では、コントローラーは Web アプリケーションのリクエストの処理を担当する重要なコンポーネントの 1 つです。コントローラーのパラメーターはリクエストを処理するときに非常に便利です。この記事では、Symfony フレームワークでコントローラーのパラメーターを使用する方法を紹介します。コントローラー パラメーターの基礎知識 コントローラー パラメーターは、ルーティングを通じてコントローラーに渡されます。ルーティングは、URI (Uniform Resource Identifier) をコントローラーにマッピングし、
