2012-04-02 52 views
3

私のvb.net(.net 4)プロジェクトでいくつかのフレンドリを作ろうとしています。私はglobal.asaxとApplication_Beginrequestについて読んだことを使ってやっていますが、それをコンパイルしてください。global.asaxを使用してURLを書き直します

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) 
    Dim httpContext As System.Web.HttpContext = httpContext.Current 
    Dim currentURL As String = currentURL.Request.Path.ToLower() 
    If currentURL.IndexOf("widgets") > 0 Then 
     objHttpContext.RewritePath("products.aspx?ID=123") 
    Else 
     objHttpContext.RewritePath(httpContext) 
    End If 
End Sub 

上記は私が試しているものですが、objHttpContextでエラーが発生しています。別の方法がありますか?理想的には、上記のメソッドがうまくいけば、データベース呼び出しを使ってURLを調べようとします。その方向への提案も大歓迎です。私はむしろすべてのサーバーに何かをインストールしたくない負荷分散環境であるので、IISに何かをインストールする必要から離れようとしています。

おかげ

トム

答えて

1

はなぜ、ときにasp.netルーティングを使用して、それは本当に簡単に行うことができますが、書き換え使いたいですか?

は、詳細は以下のリンクをご覧ください:あなたはHttpApplication.Contextにアクセスする必要があり http://msdn.microsoft.com/en-us/library/cc668201.aspx

+0

パーフェクト、これは正常に動作しますが...、mustafaöztü[email protected] – TMB87

+0

に感謝、ルーティングは、同様にWebフォームに適用することができます。 –

+0

あなたの知識をリフレッシュ「のみMVCアプリケーションに及び動的データのアプリケーションで使用されている機能を提供するために、ルーティングを」あなた – walther

7

。私はドキュメントで見ることができるように

string reqPath = Request.Url.AbsolutePath; 
if(reqPath=="/") 
    newPath="/Pages/PL/Main.aspx"; 
if (newPath != "") 
    HttpApplication.Context.RewritePath(newPath); 

あなたはVB.NETのコンテキストにアクセスするためにまったく同じ構文を使用することができるはずです。ここでは、私は(C#)とそれを行う方法です。

本当に欲しかった場合は、II7 url rewriteモジュールを使用することもできます。

+0

私が聞くことができる場合、asp.netルーティング以上の利点は何ですか? – walther

+1

@walther:ルーティングは、標準ASP.NETではないMVC機能です。質問はMVCについて言及していませんでした。 –

+0

これはあなたが間違っている理由です。ルーティングはWebフォームの一部でもあります.Net 4以降、OPは彼も同様に使用していると述べています。過去に固執してはいけない、.NETは常に進化し、我々はそれに追いつく必要があります:) – walther

関連する問題