2011-01-23 9 views
0

私は動的404ページのソリューションを探しています。ASP.NET IIS7 Dynamic 404 Page

私はPage404.aspxページを持っています。このページは、クエリ文字列がロードされたときにWebsiteIDパラメータを要求します。

それぞれのウェブサイトにはDBに格納されている別の404ページのHTMLがあり、各ページにはQueryStringのWebsiteIDで正しいHTMLが表示されます。

今、難しいことですが、CURRENT WebsiteIDを使用してクライアントを正しい404ページにリダイレクトするにはどうすればよいですか?

私は十分にはっきりしていました。事前に感謝、

ギャル。

答えて

0

Global.asaxをお持ちでない場合は、自分のWebサイト用に作成してください。 これは、あなたのウェブサイトがディレクトリごとに分割されていることを前提としています。

新しいGlobal.asaxファイルで

protected void Application_Error(Object sender, EventArgs e) 
{ 
    HttpContext ctx = HttpContext.Current; 

    Exception exception = ctx.Server.GetLastError(); 

if (ex.GetType() == typeof(HttpException)) 
{ 
    HttpException httpEx = (HttpException)ex; 
    if(httpEx.GetHttpCode() == 404) 
    { 

    int websiteID = FindWebsiteID(ctx.Request.Url.ToString()); 

    string errorPage = string.Format("~/404Page.aspx?={0}",websiteID); 

    Response.Redirect(errorPage); 
    } 
} 

public int FindWebsiteID(string url){ 

//parse the url for the directory and look up the id 
//for the website via the directory name 

} 

があるはずです、あなたはまた、追加情報については、this articleをチェックアウトすることがあります。

+0

しかし、それはすべてのエラー404を 'id = 2'に送ります - 私のウェブサイトがid 46の場合はどうなりますか? configファイルでハードコーディングすることで、ウェブサイトごとに動的にすることはできません。 –

+0

すべてのウェブサイトに独自の設定がありますか? – awright18

+0

私はすべてのページのためのサーバワイド404リダイレクトオプションがあるとは思わない、私はそれがウェブサイトごとに構成される必要があることを確かめている。私がそれを達成するために考えることができる唯一の方法は、machine.configを変更することですが、動的ではありません。 – awright18