2010-08-28 4 views
6

मैं here से कोड का इस्तेमाल किया और मैं निम्नलिखित त्रुटि मिलती नहीं मिली: HttpContext.Current.Server.MapPath()HttpContext में .NET 3.5 और विजुअल स्टूडियो 2008

उपयोग नहीं कर सकते विजुअल स्टूडियो 2008 में ContextMenuEntry "समाधान" है कि आप मदद जब आप संदर्भ खो रहे हैं?

मुझे पहले से ही पता चला है कि HttpContext मेरे आईडीई में System.Web का सदस्य नहीं है। सहायता के अनुसार> जानकारी मैं .NET 3.5 SP1 का उपयोग कर रहा हूं।

मैं इसे कैसे चला सकता हूं?

आप इस स्थिति में आमतौर पर प्रतिक्रिया कैसे करते हैं? Msdn.com में आप किस चीज की तलाश करते हैं?

+0

आप सभी तेजी से करने के लिए धन्यवाद और अत्यधिक योग्य उत्तर, विशेष रूप से तिमवी और गुफा! – OneWorld

+0

अब मैं जेटब्रेन से रेसर्पर का उपयोग इन समस्याओं को हल करने के लिए करता हूं (जैसा कि डेविड कल्प द्वारा उत्तर दिया गया है)। इस एडन के साथ आप विजुअल स्टूडियो फीचर्स में जोड़ सकते हैं जो एक्लिप्स में सामान्य ज्ञान हैं। – OneWorld

उत्तर

18

मैं उस स्थिति में क्या करूँगा HttpContext के लिए एमएसडीएन (या Google) पर देखें। मैंने ऐसा किया, और यह कहता है कि यह System.Web में है। तो सुनिश्चित करें कि आपके प्रोजेक्ट में System.Web का संदर्भ है।

HttpContext is now available.

+0

आप रॉक! स्क्रीन कास्ट के लिए धन्यवाद;) मैंने सोचा कि "System.Web का उपयोग करना" टाइप करना पर्याप्त है। शायद मुझे इस मेनू को निर्देशों का उपयोग करने के लिए सेट करना होगा। या आईडीई कॉपी कोड को पहचान नहीं पाया। किसी भी तरह जादू, क्योंकि मेरी फ़ाइल में कुछ भी नहीं बदला;) – OneWorld

+0

@user: यदि टिम्मी ने आपकी मदद की है, तो इसे एक उत्तर के रूप में चिह्नित करना सुनिश्चित करें। ध्यान दें कि असेंबली संदर्भ और बयानों का उपयोग विभिन्न जानवर हैं। असेंबली संदर्भ यह निर्धारित करते हैं कि आपके आवेदन के लिए कौन सा कोड उपलब्ध है। बयान का उपयोग कर नेमस्पेस कक्षाओं को उनके पूर्ण नामस्थान-योग्य नाम के बिना संदर्भित करने के लिए केवल सुविधाजनक शॉर्टेंड प्रदान करता है। आप पाएंगे कि संदर्भ जोड़ने से केवल आपकी csproj/vbproj फ़ाइल बदलेगी। – kbrimington

+0

@ user433718: @kbrimington ने ऊपर क्या कहा है इसके अलावा, मुझे यह भी बताएं कि असेंबली का नाम हमेशा नामस्थान नाम के समान नहीं होता है (जो इसे बहुत भ्रमित करता है)। उदाहरण के लिए, असेंबली * प्रस्तुति कोर * में बहुत सी डब्ल्यूपीएफ सामग्री है लेकिन नामस्थान * System.Windows.Media * में है। – Timwi

0

कोशिश अपनी परियोजना में System.Web के लिए एक संदर्भ जोड़ने के लिए:

“Add Reference” menu item

“System.Web” in the Add Reference dialog

... और फिर यह काम करने लगता है।

HttpContextSystem.Web का सदस्य है।

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

+0

के लिए मैं पहले से ही "का उपयोग System.Web" था लेकिन जब मैं टाइप करने के लिए "System.Web.HttpContext का उपयोग करना" यह कहते हैं की कोशिश "HttpContext" नाम स्थान "System.Web" में नहीं मिला मैंने कोड में "System.Web.HttpContext.Current.Server.MapPath()" भी कोशिश की। इस बिंदु पर विजुअल स्टूडियो ने फिर से कहा "नामस्थान में नहीं ..." – OneWorld

+0

@ user433718: आप अपने 'उपयोग' कथन में 'HttpContext' नहीं डाल सकते हैं, क्योंकि यह एक वर्ग है, नामस्थान नहीं है। – Guffa

+0

यदि डीएलएल संदर्भित नहीं है तो आईडीई स्वचालित रूप से नामस्थान का पता नहीं लगा सकता है। यदि आप डीएलएल के संदर्भ में भी ऐसा करने में सक्षम होना चाहते हैं, तो मुझे नहीं लगता कि यह संभव है। –

2

आप HttpContext वर्ग के लिए documentation में देख सकते हैं, और यह आपको बताता है कि यह System.Web नाम स्थान में है, System.Web.dll पुस्तकालय में।

इसलिए, यह उपयोग करने के लिए आप System.Web.dll पुस्तकालय के लिए एक संदर्भ की जरूरत है, और आप या तो एक using System.Web; बयान की जरूरत है, या fullly योग्य नाम System.Web.HttpContext.Current.Server.MapPath का उपयोग करें।

हालांकि, क्या आप वाकई MapPath विधि का उपयोग करना चाहते हैं? विधि को फ़ाइल के वेब संदर्भ का भौतिक पथ मिलता है। यदि आपकी सीएसवी फ़ाइल का पथ एक वेब संदर्भ है, उदाहरण के लिए "/data/items.csv" तो आप MapPath विधि का उपयोग करना चाहते हैं, लेकिन यदि आपके पास "C:\mydata\items.csv" उदाहरण के लिए कोई भौतिक पथ है तो आप इसे परिवर्तित नहीं करना चाहते हैं।

इसके अलावा, MapPath केवल तभी काम करता है यदि आप वास्तव में वेब एप्लिकेशन में हैं, जहां HTTP संदर्भ है।

+0

इस टिप्पणी के लिए धन्यवाद। मुझे इस पर गौर करना होगा। मैं इससे पहले नहीं जानता था। बस इसे किसी भी तरह से काम करना चाहता था ... – OneWorld

+0

हाँ, मुझे इस कोड की भी आवश्यकता नहीं है! *हा हा धन्यवाद! मुझे यकीन है कि यह मेरा अगला प्रश्न होगा;) – OneWorld

1

टिमवी के पास यह सही है, लेकिन पूर्णता के लिए। नहीं, वीएस में 'सॉल्यू' क्षमता नहीं है, हालांकि इस कार्यक्षमता को कुछ एड-ऑन द्वारा आंशिक रूप से जोड़ा गया है। उदाहरण के लिए, Resharper संदर्भ जोड़ने और आवश्यक होने पर उपयोग करने का विकल्प जोड़ देगा - लेकिन समाधान में पहले इसे संदर्भित किया जाना चाहिए ताकि यह प्रारंभिक खोज समस्या को हल न करे।

1

सही ढांचे का उपयोग न करने का यह एक साधारण मामला था, इसका मतलब है कि मेरा डिफ़ॉल्ट 'प्रकाश' संस्करण की बजाय पूर्ण वसा संस्करण है।

सही परियोजना पर क्लिक करें और फिर गुण और यह सुनिश्चित करें नवीनतम ढांचे के पूर्ण संस्करण बनाने यानी '.NET फ्रेमवर्क 4' चुना जाता है, नहीं '.NET फ्रेमवर्क 4 ग्राहकों का प्रोफाइल'