2011-08-28 10 views
5
public void getContent() { 
    string VirtualPath = "~/Content.aspx"; 
    var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page)) as IHttpHandler; 
    page.ProcessRequest(HttpContext.Current); 
} 

मैं अलग-अलग फ़ाइलों से सामग्री को लोड करने के लिए उस फ़ंक्शन का उपयोग कर रहा हूं, लेकिन "पृष्ठ। प्रोसेस रेक्वेट (HttpContext.Current)" सामग्री को वर्तमान संदर्भ में सम्मिलित करता है, और मुझे जो चाहिए वह सामग्री को वापस करने के लिए फ़ंक्शन है निर्दिष्ट फ़ाइल का।मैं एक नया HttpContext कैसे बना सकता हूं?

मुझे आश्चर्य है कि वहाँ एक काम कर रास्ता एक नया HttpContext बनाने के लिए अगर, ताकि "page.ProcessRequest" वर्तमान प्रतिक्रिया में कुछ भी सम्मिलित नहीं है।

उत्तर

3

ओडेड अब तक सही है जैसा की मैं जनता हूँ। आप आसानी से HttpContext का अपना उदाहरण नहीं बना सकते हैं। हालांकि आप अभी भी अपने लक्ष्यों को अन्य साधनों के माध्यम से प्राप्त कर सकते हैं।

सर्वर का उपयोग करें। निष्पादन करें। http://msdn.microsoft.com/en-us/library/ms150027.aspx

आप एक TextWriter के साथ निष्पादित करने के लिए में सामग्री डंप करने के लिए HttpHandler निर्दिष्ट कर सकते हैं।

1

आप एक नया HttpContext नहीं बना सकते, काम arounds के बहुत सारे के बिना नहीं।

यह ASP.NET और बीसीएल की असफलताओं में से एक है - वेब अनुप्रयोगों untestable बनाता है (या कम से कम बहुत मुश्किल HttpContext बिना परीक्षण करने के लिए

मैं आपकी आवश्यकता what I need is the function to return the content of the specified file पर स्पष्ट नहीं कर रहा हूँ -। आप कृपया उसका वर्णन वास्तव में आपको लगता है कि क्या मतलब है?

+0

खैर मैं/प्रक्रिया interal .aspx फ़ाइलें लोड और html वे लौट प्राप्त करना चाहते हैं, लेकिन मैं WebRequest के माध्यम से यह करने के लिए नहीं करना चाहते हैं: -/ताकि मैं सामग्री स्टोर कर सकते हैं/उन के HTML " मॉड्यूल "और एक और अनुरोध किए बिना उन्हें फिर से उपयोग करें। –

+0

@ करलोस - क्या आपका मतलब है कि आप उन्हें टेम्पलेट्स के रूप में उपयोग करना चाहते हैं? – Oded

1

चेक बाहर Pex/Moles अपने एक मजाक रूपरेखा है कि लगभग किसी भी प्रकार या सदस्य नकली कर सकते हैं, भले ही अपने सील्ड या स्थिर भी शामिल है। (यह एक कस्टम परीक्षण मेजबान का उपयोग करके इस करता है)

-1
public class HttpContextManager 
     { 
      private static HttpContextBase _context; 
      public static HttpContextBase Current 
      { 
       get 
       { 
        if (_context != null) 
         return _context; 

        if (HttpContext.Current == null) 
         throw new InvalidOperationException("HttpContext not available"); 

        return new HttpContextWrapper(HttpContext.Current); 
       } 
      } 

      public static void SetCurrentContext(HttpContextBase context) 
      { 
       _context = context; 
      } 

     } 

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

  • कोई संबंधित समस्या नहीं^_^