asp.net アドレス マッピング - 疑似静的

asp.net アドレス マッピング - 疑似静的

asp.net アドレス マッピングの定義は、ユーザーがアクセスする仮想アドレスにマップされた実際のファイルであり、仮想アドレスは静的ページである可能性があります。 Ruli: http://fuzhou.naoqiu.com/bus のページにアクセスすると、実際には /bus.aspx のページにアクセスしていることになります。

Asp.net アドレス マッピングは、HttpModule 要求原則を通じて機能します。

httpModule の原理は何ですか?

HttpModule コンテナでの HTTP リクエストの送信プロセス中に、HTTP リクエストは特定の瞬間 (ResolveRequestCache イベント) に HttpHandler コンテナに渡されます。このイベントの後、HttpModule コンテナーは HttpHandler のエントリ インスタンスを確立しますが、この時点では HTTP 要求の制御は渡されず、AcquireRequestState イベントと PreRequestHandlerExcute イベントが引き続きトリガーされます。 PreRequestHandlerExcute イベントの後、HttpModule ウィンドウは、実際の HTTP 要求処理を実行するために、一時的に HttpHandler コンテナーに制御を渡します。

ProcessRequest メソッドは、HTTP リクエストを処理するために HttpHandler コンテナ内で実行されます。コンテナ HttpHandler は HTTP 要求全体を処理した後、制御を HttpModule に返し、HttpModule はクライアントに戻るまで、処理された HTTP 要求情報フローをレイヤーごとに転送し続けます。

ブロガーから借りた写真

原理を理解した後、簡単なアドレス マッピングを完成させます。コードは次のとおりです。

まず、アドレス マッピングの基本クラスを完成させます。

///<要約>

/// アドレス書き換え

/// </要約>

パブリック抽象クラス BaseModuleRewriter: IHttpModule

{

/// <要約>

/// 初期化呼び出し

/// </要約>

/// <param name="app"></param>

パブリック仮想void Init(HttpApplicationアプリ) {

app.BeginRequest += 新しい EventHandler(app_BeginRequest);

}

パブリック仮想 void Dispose() { }

/// <要約>

/// リクエスト開始

/// </要約>

/// <param name="送信者"></param>

/// <パラメータ名="e"></パラメータ>

保護された仮想 void app_BeginRequest(オブジェクト送信者、EventArgs e)

{

HttpApplication app = sender を HttpApplication として指定します。

書き換え(アプリ);

}

/// <要約>

/// 抽象操作メソッド

/// </要約>

/// <param name="app"></param>

保護された抽象 void Rewrite(HttpApplication app);

}

基本クラスを継承し、必要なアドレス マッピング操作を完了します。

保護されたオーバーライド void Rewrite(HttpApplication app)

{

HttpContext コンテキスト = app.Context;

HttpRequest リクエスト = app.Request;

文字列部分 = Regex.Match(request.Url.ToString(), @"(?<=http\:\/\/).*").Value.ToLower().Trim('/');

(part.IndexOf("/") == -1の場合)

{

part = Regex.Match(part, @"^\w+").Value;

スイッチ(部品)

{

case "bus": context.RewritePath("/bus.aspx"); break;

「www」の場合:

case "naoqiu": context.RewritePath("/Default.aspx"); break;

デフォルト: context.RewritePath("/Index_City.aspx"); break;

}

}

}

何かが足りないのでしょうか? はい、構成ファイルが足りません。 web.config ファイル内のいくつかの場所を変更する必要があります。コードは次のとおりです。

<!--リクエストルール-->

<httpモジュール>

<add name="BianminModuleRewriter"
タイプ="Bianmin.URLRewriter.ModuleRewriter、Bianmin.URLRewriter" />

</httpモジュール>

<システム.Webサーバー>

<ハンドラ>
<add name="aspnet_isapi" path="*" verb="*" modules="IsapiModule" script Processor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
</ハンドラ>

<デフォルトドキュメント>

<ファイル>

<クリア />

<値を追加="default.aspx" />

</ファイル>

</defaultDocument>

</system.webServer>

注意:framewore 2..0を使用する場合は、\aspnet_isapi.dllファイルパスを変更する必要があります。

ソースコードのダウンロードアドレス: http://download.naoqiu.com ダウンロード

元のタイトル: asp.net アドレス マッピング - 疑似静的

キーワード: 疑似静的、ウェブマスター、ウェブサイト、ウェブサイトのプロモーション、収益化

<<:  ウェブサイトのユーザー利用率を効果的に高める方法

>>:  ウェブサイトタイトルの書き方の詳細説明

推薦する

日々の話題:映像業界に大きな変化。映像業界の展望は?

8月16日のWebmaster Network(www.admin5.com)によると、オンラインビ...

製薬B2C業界の規模は3倍に拡大し、ベンチャーキャピタルはこれを最後のブルーオーシャンと呼んでいる

「2012年、中国の医薬品B2Cの年間規模は16億6500万元に達した。」中国オンライン薬局協議会が...

Baiduプロモーションウェブサイトのクリック時の遅いオープン速度からウェブサイトスペースの安定性について議論する

「商品に自信があるなら、百度入札プロモーションをやろう!」これは、ロビン・リーが百度入札商品を位置づ...

百度の最近のアルゴリズムアップデートからまとめたSEO戦略

中国のネットユーザー数が増え続けるにつれ、インターネットコンテンツの品質に対する要求も高まっている。...

K8S PV / PVC / StorageClass をわかりやすい言葉で説明する (理論 + 実践)

この記事はWeChatの公開アカウント「The Calm Programmer」から転載したものです...

VPS ホスティング、年間 7 ドル / 512 MB メモリ / 10 GB SSD / 無制限トラフィック / VMware

鶏はモンスターです: Dell r810、64 論理コア、512 GB RAM、SSD S「言葉では...

「盲目的に走った51クレジットカード」は「存亡の危機」から逃れられない

10月21日、51クレジットカードが突然大手メディアの見出しを飾りました。浙江省警察は数百人の警官を...

ビジネスウェブサイトへのトラフィックを増やす方法

企業はインターネットの重要性をますます認識するようになり、インターネットを第二の人生のようにしっかり...

注意深い!クラウドコンピューティングの8つの隠れたコストに注意

ここでは、IT 管理者が不意を突かれるクラウド コンピューティングの 8 つの側面について説明します...

他人を真似することが何が悪いのでしょうか?あなたのオリジナル性はどれくらいですか?

Gold Digger がウェブサイトを立ち上げてから 1 年以上経ちました。この 1 年間、他のブ...

servarica: カナダの GPU VPS、月額 15 ドル、AMD FirePro s7150/3g メモリ/3 コア/2T ハードディスク/100M 帯域幅無制限トラフィック

10 年間運営されているカナダの企業 Servarica が、新しい製品「GPU VPS」を開発しま...

ハンマーがやってくる:ハンマーの現状と将来についての簡単な分析

3月27日、北京でSmartisan ROMの発表会が開催され、創設者のLuo Yonghao氏が主...

アリババクラウドは、自社開発の第4世代神龍アーキテクチャを搭載し、RDMA強化インスタンスを含む多数の新製品をリリースした。

12月21日、アリババクラウドは自社開発の神龍アーキテクチャをベースにしたRDMA強化インスタンス、...

ビジネスシナリオに基づくコンテナ脱出技術

導入近年、コンテナは、あらゆる環境で実行できること、オーバーヘッドが低いこと、数秒で起動できること、...