2012-01-23 3 views
5

में कक्षा फ़ाइल में परिभाषित फ़ंक्शन के अंदर प्रतिक्रिया.प्रैक्ट का उपयोग कैसे कर सकता हूं मेरे पास एक क्लास फ़ाइल के अंदर परिभाषित एक साधारण फ़ंक्शन GetPageName(String PageFileName, String LangCode) है। मैं इस फ़ंक्शन को default.aspx.cs फ़ाइल से कॉल करता हूं, इस फ़ंक्शन में मैं उपयोगकर्ता को यह दिखाने के लिए Response.Redirect("Error.aspx") का उपयोग करने में सक्षम नहीं हूं कि त्रुटि उत्पन्न हुई है।मैं सी # 3.0

नीचे कोड

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; 
} 

है मैं व्यापार और dataLayer में परिभाषित किया गया कार्य कर सकते हैं के उदाहरण मैं जहां जाल त्रुटि करना चाहते हैं और त्रुटि पृष्ठ के लिए उपयोगकर्ता अनुप्रेषित है।

+0

त्रुटि क्या है। – rerun

+3

यह खराब डिजाइन है। व्यापार परत को एएसपी.Net – SLaks

+2

के बारे में पता नहीं होना चाहिए आपके पास SQL ​​इंजेक्शन भेद्यता है। – SLaks

उत्तर

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

इसका उपयोग करने के लिए आपकी असेंबली System.Web का संदर्भ लेना चाहिए।

+0

उत्कृष्ट, लेकिन @ छात्र दुबई- आपको स्केलेबिलिटी और व्हाटिफ सोचना चाहिए? (जोखिम)। लोगों ने आपको उन मूल्यवान विचारों के बारे में बताया जिन्हें आपको सोचना चाहिए। – Mubarek

+0

धन्यवाद। त्वरित लाइन के लिए +1। – SearchForKnowledge

4

एक शुरुआत के लिए, एक ही स्थान पर आप का उपयोग करने की कोशिश कर रहे हैं:

response.redirect(...); 

जो वैसे भी काम नहीं होगा - सी # केस-संवेदी है।

लेकिन बड़ी समस्या यह है कि Response.Redirect पर मिलने के लिए Page.Response संपत्ति का उपयोग करता है। यह तब उपलब्ध नहीं है जब आप किसी पृष्ठ में नहीं हैं।

विकल्प:

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

:

  • उपयोग HttpContext.Current.Response एक पैरामीटर के रूप विधि में क्रियान्वित धागा
  • यह दर्रा के लिए वर्तमान प्रतिक्रिया के लिए प्रतिक्रिया में प्राप्त करने के लिए (संपादित करें: टिप्पणियों में उल्लेख के अनुसार, आपके पास एक एसक्यूएल इंजेक्शन भेद्यता भी है। कृपया पैरामीटरयुक्त एसक्यूएल का उपयोग करें। इसी प्रकार पूर्व दिखा रहा है सीधे उपयोगकर्ताओं को सीपशन संदेश स्वयं में एक सुरक्षा भेद्यता हो सकती है ...)

+1

उसके पास भी बड़ी समस्याएं हैं :) – SLaks

+1

@SLaks: True - एसक्यूएल इंजेक्शन नहीं देखा था। EEK। –

+0

@ स्लक्स: मैं एसक्यूएल इंजेक्शन की जांच कर सकता हूं या स्टोर प्रक्रिया में सभी एसक्यूएल को कन्वर्ट कर सकता हूं जो एसक्यूएल इंजेक्शन का ख्याल रखेगा, लेकिन अगर मैं डेटा लेयर में त्रुटि उत्पन्न करता हूं तो मैं उपयोगकर्ताओं को सूचित करना चाहता हूं कि मैं इसे सर्वोत्तम तरीके से कैसे प्राप्त कर सकता हूं। उदाहरण उपरोक्त कोड उदाहरण – Learning