वर्तमान प्रणाली प्राप्त करें। HttpContext से।


84

यह वास्तव में एक दो हिस्सा सवाल है। सबसे पहले, HttpContext.Current वर्तमान System.UI.Page ऑब्जेक्ट के अनुरूप है?

और दूसरा प्रश्न, जो शायद पहले से संबंधित है, यही कारण है कि मैं यह देखने के लिए निम्न का उपयोग नहीं कर सकता कि क्या वर्तमान पृष्ठ एक इंटरफ़ेस लागू करता है:

private IWebBase FindWebBase()
{
    if (HttpContext.Current as IWebBase != null)
    {
        return (IWebBase)HttpContext.Current.;
    }
    throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}

सामान्य संदर्भ यह है कि कुछ नियंत्रणों को यह जानना आवश्यक है कि क्या वे SharePoint वेबपार्ट के रूप में निष्पादित कर रहे हैं, या एक Asp.Net ढांचे के हिस्से के रूप में।

मैंने इस समस्या को हल करने के लिए नियंत्रण के लिए एक संदर्भ पास करने की आवश्यकता है, और नियंत्रण की पृष्ठ संपत्ति की जांच की है, लेकिन मैं अभी भी उत्सुक हूं कि ऊपर काम क्यों नहीं करता है।

संकलक त्रुटि है: एक सिस्टम रूपांतरण, बॉक्सिंग रूपांतरण, अनबॉक्सिंग रूपांतरण, रैपिंग रूपांतरण या अशक्त प्रकार के रूपांतरण के माध्यम से IWebBase को System.Web.HttpContext ... में कनवर्ट नहीं किया जा सकता है।

जवाबों:


144

नहीं, MSDN से HttpContext.Current पर: "वर्तमान HTTP अनुरोध के लिए HttpContext ऑब्जेक्ट हो जाता है या सेट होता है।"

दूसरे शब्दों में यह एक पृष्ठ नहीं बल्कि एक HttpContext ऑब्जेक्ट है।

आप का उपयोग करके HttpContext के माध्यम से पेज ऑब्जेक्ट पर जा सकते हैं:

Page page = HttpContext.Current.Handler as Page;

if (page != null)
{
     // Use page instance.
}

2
डाउन-वोट क्योंकि गलत है। HttpContext.Current.CurrentHandler के साथ उत्तर सही है! यदि आप एक Server.Transfer करते हैं, HttpContext.Current.Handler पिछले पृष्ठ होगा, HttpContext.Current.CurrentHandler वर्तमान पृष्ठ होगी
माइक

37

तुम खोज रहे हो HttpContext.Handler। चूंकि पेज IHttpHandler को लागू करता है, आप वर्तमान में निष्पादित पृष्ठ पर एक संदर्भ प्राप्त करेंगे। आपको इसे डालना होगा, या कम से कम उस विशेष प्रकार के लिए डालने का प्रयास करना होगा जिसे आप खोज रहे हैं।

HttpContext.Currentबस HttpContext का सिंगलटन उदाहरण देता है। इसलिए, यह एक पृष्ठ नहीं है और न ही हो सकता है।


2
इसे पढ़ने वाले किसी को भी नोट करें। नीचे उत्तर समान है लेकिन एक उदाहरण के साथ (यानी आप HttpContext.Current.Handler का उपयोग करते हैं)।
माइक नेल्सन

15

HttpContext.Current.CurrentHandlerयदि आप वर्तमान में निष्पादित कर रहे सटीक पृष्ठ चाहते हैं, तो आप इसका उपयोग करना चाह सकते हैं । उदाहरण के लिए, Default.aspx के लिए एक अनुरोध भेजा जाता है, लेकिन एक त्रुटि डाली जाती है और आप Response.Transferअपने कस्टम ErrorHandler.aspx पृष्ठ पर जाते हैं। CurrentHandlerErrorHandler.aspx का उदाहरण लौटाएगा (यदि त्रुटि के बाद कहा जाता है) जबकि HttpContext.Current.HandlerDefault.aspx का एक उदाहरण लौटाएगा।


0

कृपया मेरा उत्तर देखें:
क्यों HttpContext.Current.Handler शून्य है?

शायद आपकी समस्या हल हो गई।


मैं अपने काम के लिए समान कोड का उपयोग कर रहा हूं, लेकिन मैं बहुत नाराज था क्योंकि मुझे काम के विवरण की जानकारी नहीं थी। इसलिए अपने काम के लिए इस कोड को विकसित किया। मैंने सोचा कि यहाँ कोड डाल दो दोस्तों की मदद करने के लिए जो मेरी समस्या है। जॉन सॉन्डर्स को धन्यवाद।
अमीन गदेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.