2012-01-23 2 views
5

私はクラスファイル内に単純な関数GetPageName(String PageFileName, String LangCode)を定義しています。私はdefault.aspx.csファイルからこの関数を呼び出します。この関数では、エラーが生成されたことをユーザに示すためにResponse.Redirect("Error.aspx")を使用することはできません。以下はc#3.0のClassファイルで定義されている関数の内部からresponse.redirectを使用するにはどうすればいいですか?

私はエラーをトラップする場所ビジネスとDatalayerで機能を定義し、エラーページにユーザーをリダイレクトすることがてきたコード

public static string GetPageName(String PageFileName, String LangCode) 
{ 
    String sLangCode = Request("Language"); 
    String pgName = null; 
    if (sLangCode.Length > 6) 
    { 
     Reponse.Redirect("Error.aspx?msg=Invalid Input"); 
    } 
    else 
    { 
     try 
     {    
      String strSql = "SELECT* FROM Table"; 

      Dataset ds = Dataprovider.Connect_SQL(strSql); 

     } 
     catch(Exception ex) 
     { 
      response.redirect("Error.aspx?msg="+ex.Message); 
     } 
    } 
    return pgName; 
} 

の一例です。

+0

エラーとは何ですか? – rerun

+3

それは悪いデザインです。ビジネス層はASP.Netについて知らないでください。 – SLaks

+2

あなたはSQLインジェクションの脆弱性があります。 – SLaks

答えて

14
HttpContext.Current.Response.Redirect("error.aspx"); 

アセンブリを使用するには、System.Webを参照する必要があります。スタートのために

+0

優れていますが、@ StudentDubai-スケーラビリティとwhatifを考えるべきでしょうか? (リスク)。フォークスは、あなたが考えるべき貴重なアイデアを語った。 – Mubarek

+0

ありがとうございます。クイックライン+1。 – SearchForKnowledge

4

は、一つの場所にあなたが使用しようとしている:

response.redirect(...); 

とにかく動作しないであろう - C#が大文字と小文字が区別されます。

しかし、大きな問題は、Response.RedirectPage.Responseというプロパティを使用して該当するHttpResponseを取得することです。もちろん、あなたがページにいないときは利用できません。

オプション:

  • 使用HttpContext.Current.Response実行中のスレッド
  • ための電流応答がパラメータとしてメソッドにそれを渡しするための応答で取得する:

    // Note: parameter names changed to follow .NET conventions 
    public static string GetPageName(String pageFileName, String langCode, 
               HttpResponse response) 
    { 
        ... 
        response.Redirect(...); 
    } 
    

を(編集:コメントに記載されているように、SQLインジェクションの脆弱性もあります。パラメータ化されたSQLを使用してください。ユーザーに直接送信するメッセージは、それ自体セキュリティ上の脆弱性になります...)

+1

彼はさらに大きな問題を抱えています:) – SLaks

+1

@SLaks:True - SQLインジェクションを検出しませんでした。 Eek。 –

+0

@Slaks:SQLインジェクションをチェックしたり、SQLインジェクションを処理するストアプロシージャにすべてのsqlを変換できますが、エラーがデータレイヤーに生成された場合はどうすればよいかをユーザーに通知したいと考えています。例は上のコード例 – Learning

関連する問題