asp.Net URL書き換え簡略版速学URL書き換え

2997 ワード

asp.NetでURL書き換え(URLRewriter)を実現する最も簡単な方法です.
(著者Scott Mitchell翻訳:Janssen)の大作を参考にして、完全には読めませんでしたが、猫の絵の虎のように一つ作って、「達成」感がありました.書いて分かち合います.
原作ではいろいろな原理を話していますが、ここでは言いません(実は私にもわかりません).ここでは操作手順を書きましょう.最も簡単なURL書き換えを実現できるプログラムを実現することを目的としている.
1、IISのサイト属性を設定する必要があります.
2、webを修正する.configの内容.
 
  






中*zhtmlはアドレスバーに書いてあるページの拡張子で、ユーザーに見せるものです.これは勝手に変更できます(ただし、拡張子のルールに合致しなければなりません!).もちろん、最初のステップの設定と一致しなければなりません.
3、クラスを書きます.
コード#コード#
 
  
using System;
using System.IO;
using System.Web;
using System.Web.UI;
namespace ZDIL.URLRewriter
{
/**////
/// URL
///

public class RewriterFactoryHandler : IHttpHandlerFactory
{
/**////
/// GetHandler is executed by the ASP.NET pipeline after the associated HttpModules have run. The job of
/// GetHandler is to return an instance of an HttpHandler that can process the page.
///

/// The HttpContext for this request.
/// The HTTP data transfer method (GET or POST)
/// The RawUrl of the requested resource.
/// The physical path to the requested resource.
/// An instance that implements IHttpHandler; specifically, an HttpHandler instance returned
/// by the PageParser class, which is the same class that the default ASP.NET PageHandlerFactory delegates
/// to.

public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
string sendToUrl = url; //
string filePath = pathTranslated;
string sendToURLString = "/web/index.aspx"; //
string queryString = ""; // 。 ?id=123
filePath = context.Server.MapPath(sendToURLString); //
// 。 。
context.RewritePath(sendToURLString, String.Empty, queryString);
return PageParser.GetCompiledPageInstance(url, filePath, context);
}
public virtual void ReleaseHandler(IHttpHandler handler)
{
}
}
}

このクラスは、個別のプロジェクトに書いてZDILURLRewriterにコンパイルします.DLLファイル.(ファイル名に注意して書き間違えたら正常に動作しません).
4、できました.
IEを開き、アドレスバーに入力http://.../1.zhtml.
閲覧者は静的ページのアドレスを見たが、実際にアクセスしたのは/web/indexである.aspxというダイナミックなページ.
どのように簡単ですか.
もちろん、これが一番簡単で、「使えない」ほど簡単です.彼はすべての*をzhtmlのアクセスはすべて/web/indexに「書き換える」.aspx .
どのようなページをどのページに書き換えるかについては、ここでは紹介しません(ここでは方法だけを話し、実現の詳細は話しません).
方法はたくさんあって、原作は正則を通じてマッチングして、私はstring sendToUrl=urlを通じてです;判断する.
他はあなたたちのニーズ次第です.