Ich habe im Internet gesehen, dass viele Freunde URLs in asp.net umschreiben und die Methode HttpHandle + Server.Transfer verwenden. Tatsächlich ist diese Methode falsch. Erstens kann HttpHandle urlrewrite nicht implementieren; zweitens ist Server.Transfer eine Standardumleitung, überhaupt kein urlrewrite.
Tatsächlich müssen Sie kein eigenes HttpHandle oder HttpModule implementieren, um URLrewrite zu implementieren. Es kann einfach mit ein paar Codezeilen implementiert werden.
Was ich hier vorstelle, ist auf einem virtuellen Host, der sich von Ihrem eigenen Server unterscheidet. Sie haben weder die Berechtigung, iS zu ändern, noch haben Sie die Berechtigung, IIS-Plug-Ins wie iS Rewrite zu installieren. Aber wir können die erforderlichen Funktionen trotzdem problemlos ausführen.
Die spezifische Methode lautet wie folgt: Öffnen Sie global.asax.cs und suchen Sie protected void Application_BeginRequest(Object sender, EventArgs e). Ich denke, ich kann anhand des Methodennamens erraten, was sie bewirkt. Geben Sie den folgenden Code ein:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
string oldUrl = HttpContext.Current.Request.RawUrl;
string pattern = @"^(.+)default/(d+).aspx(?.*)*$";
string replace = "$1default.aspx?id=$2";
if(Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
string newUrl = Regex.Replace(oldUrl, pattern, replace, RegexOptions.Compiled | RegexOptions.IgnoreCase);
this.Context.RewritePath(newUrl);
}
}
Mit dem obigen Code greife ich auf eine URL zu, die der folgenden ähnelt: .../default/123.aspx. Natürlich existiert diese URL nicht auf meinem Computer, daher wird sie an folgende Adresse weitergeleitet: .../default.aspx? =123.
Natürlich können Sie die URL mithilfe leistungsstarker regulärer Ausdrücke entsprechend Ihren eigenen Anforderungen umschreiben. Dies geschieht alles stillschweigend auf der Serverseite und der Client merkt es nicht. Da es sich auf einem virtuellen Host befindet, können wir die ASPX-Datei nur umleiten. Wenn es sich um unseren eigenen Server handelt, können wir jedes Suffix verarbeiten, indem wir das Suffix einfach in iis registrieren. Sie können beispielsweise einen Typ wie *.myweb registrieren, sodass Sie ihn, wenn andere default/456.myweb besuchen, auf default.aspx?id=456 umleiten können. Mit einem Wort: Solange Sie daran denken können, kann .net Ihnen bei der Umsetzung helfen, und das alles erfordert nicht viel Code.