2009-06-28 19 views
5

मैं एक HttpModule के भीतर किसी पृष्ठ तक पहुंचने का प्रयास कर रहा हूं और मुझे लगता है कि मुझे इसे HttpContext.Current.Handler (इसे वर्तमान पृष्ठ का संदर्भ देना चाहिए) को कॉल करके करना चाहिए, लेकिन मुझे हर समय शून्य मिल रहा है।क्यों HttpContext.Current.Handler शून्य है?

मैं .NET 3.5 ढांचे का उपयोग कर विकास कर रहा हूं।

मैं AuthorizeRequest और AuthenticateRequest

धन्यवाद पर इस जाँच कर रहा हूँ।

उत्तर

8

शायद, अनुरोध अभी तक एक हैंडलर को सौंप दिया गया नहीं है (उदाहरण के लिए, आप BeginRequest में हैं)।

+0

मैं AuthorizeRequest और AuthenticateRequest – Paleta

+2

@Paleta की जाँच कर रहा हूँ: (परीक्षण किया है)
द्वारा परीक्षण किया गया आप इसे वहाँ की जाँच नहीं कर सकते। अनुरोध प्रमाणित/अधिकृत होने के बाद हैंडलर का चयन किया जाएगा। आप इसे 'PostMapRequestHandler' ईवेंट और बाद में देख सकते हैं। –

0

इस संपत्ति को आप किस तरीके से एक्सेस कर रहे हैं?

IHttpModule.Init में, यह null होगा। विधि पर पैरामीटर के रूप में प्राप्त application पर ईवेंट हैंडलर को पंजीकृत करने की आवश्यकता है और वहां अपना काम करें।

+0

मैं AuthorizeRequest और AuthenticateRequest पर जांच कर रहा हूं – Paleta

4

AuthorizeRequest और AuthenticateRequest में, हैंडलर अभी तक नहीं बनाया गया है। (यदि अनुरोध अस्वीकार कर दिया गया है तो एक हैंडलर नहीं बनाया जाना चाहिए) इसलिए, यह संपत्ति शून्य है।

आप Page क्यों करते हैं, और आप क्या करने की कोशिश कर रहे हैं?

आप PostMapRequestHandler से निपटने सकता है की कोशिश, जिसके बाद यह Page निराकरण होता है, और एक HttpException फेंकने या Response.End बुला अगर आप अनुरोध को अस्वीकार करने का फैसला।

हालांकि, कृपया ध्यान दें कि हैंडलर का उदाहरण प्राप्त करने के लिए, इसके निर्माता को चलाना चाहिए; सुनिश्चित करें कि यह कुछ भी महत्वपूर्ण या संवेदनशील नहीं करता है।

1

मुझे इसी तरह की समस्याएं हैं और अंत में समाधान मिला। मेरी समस्या शून्य वापस लौटा दी गई थी और फिर बाहरी कोड पर इस कोड का उपयोग करें। मैं अपनी अंग्रेजी के लिए क्षमा चाहता हूं अच्छा नहीं है। कोड के माध्यम से

समाधान: वी.एस. 2010

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 

//[Description of MyNamespace] 
//|================================================================================> 
//|-----*(In The Name Of GOD)*----- 
//|================================================================================> 

namespace MyNamespace 
{ 
//Most Be "partial class" And ": System.Web.UI.Page" !!!! 
public partial class MyClass : System.Web.UI.Page 
{ 
    //|============================================================> 
    //| Value Of Class. 
    //|============================================================> 

    static System.Web.UI.Page Page1 = null; 
    static System.Web.UI.Page Page2 = null; 

    int form1Index = -0; 


    //Most Be Static Method!!!! 
    public static void GetMyPage() 
    { 
     //Both are a result code. 
     //هر دو کد یه نتیجه می دهد 
     Page1 = HttpContext.Current.Handler as System.Web.UI.Page; 
     Page2 = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; 

    } 


    //|============================================================> 
    //| DO() Methods Of MyClass Class. 
    //|============================================================> 
    public void DO() 
    { 
     //Call Your Static Method => GetMyPage() 
     GetMyPage(); 

     if (Page1 != null) 
     { 
      for (int i = 0; i < Page1.Controls.Count; i++) 
      { 
       if (Page1.Controls[i].ID == "form1") 
       { 
        form1Index = i; 
        break; 
       } 
      } 
     } 

     if (form1Index != -0) 
     { 
      for (int j = 0; j < Page1.Controls[form1Index].Controls.Count; j++) 
      { 
       string ControlsID = Page1.Controls[form1Index].Controls[j].ID; 
       // Code location ... 
       //محل قرار گیری کد ها... 
      } 

     } 
    } 



    //|============================================================> 
    //| Destructor Methods MyClass Class. 
    //|============================================================> 
    ~MyClass() { } 
} 

}

संबंधित मुद्दे