2012-10-05 24 views
8

क्यों पर्यावरण। गेटइन्वायरवायरवारेबल ("वेरिएबलनाम") को वैरिएबल का वैल्यू नहीं मिलेगा यदि कॉल आईआईएस पर होस्ट किए गए वेबमेड के भीतर से किया गया है और यह काम करेगा अगर मैं इसे कंसोल से कॉल करता हूं एक ही मशीन पर आवेदन?पर्यावरण। GETEnvironmentVariable वैरिएबल वैल्यू नहीं मिलेगा

आईआईएस वेब सेवाओं के लिए दृश्यमान होने के लिए मैं उन चरों को कहां सेट अप करूं? क्या मुझे पर्यावरण से दूसरे पैरामीटर का उपयोग करना चाहिए। GETEnvironmentVariable (नाम, लक्ष्य) इसे प्राप्त करने के लिए?

यह वास्तव में बहुत सरल है:

<code> 

[WebMethod(Description = "Gets the environment variable value.")] 
public string GetEnvironmentVariable() 
{ 
    return Environment.GetEnvironmentVariable("VARIABLE_NAME_HERE"); 
} 

</code> 

और वैसे, VARIABLE_NAME_HERE प्रणाली और उपयोगकर्ता स्तर पर स्थापित किया जाएगा।

अग्रिम

+0

यदि आप हमें कुछ कोड दिखाते हैं तो यह आपकी सहायता करेगा ताकि हम देख सकें कि आप किस चर को लाने की कोशिश कर रहे हैं। – sergserg

+0

ने प्रश्न के लिए कुछ कोड जोड़ा, लेकिन यह वास्तव में सरल है ... – Lemmerich

उत्तर

6

धन्यवाद अधिक जानकारी के लिए पढ़ें:

Using System Wide Environment Variables in .NET Application


विशेष रूप से:

क्या सिस्टम पर्यावरण चर रहे हैं?

पर्यावरण चर तार हैं जो आपके सिस्टम में संपूर्ण वातावरण के बारे में जानकारी सहेजते हैं। ये स्ट्रिंग मान गतिशील हैं और वे आपके सिस्टम पर व्यवहार करने के तरीके को प्रभावित कर सकते हैं।

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

उपयोगकर्ता चर: वे वर्तमान सिस्टम उपयोगकर्ता के वर्तमान वातावरण को प्रभावित करते हैं। उन्हें हटाया जा सकता है, संशोधित किया जा सकता है, और किसी भी सिस्टम उपयोगकर्ता द्वारा जोड़ा जा सकता है। इन्हें विंडोज़ सेटअप, कुछ प्रोग्रामों और उपयोगकर्ताओं द्वारा उपयोग किया जाता है। इन चरों में परिवर्तन रजिस्ट्री में सहेजे जाते हैं और प्रभावी प्रभावी होते हैं।


आप एक वातावरण चर है कि आपकी मशीन आप मुद्दों होगा पर मौजूद नहीं है आह्वान करने के लिए प्रयास करें। आपको अपनी स्थानीय मशीन पर मौजूद एक चर खोजने की कोशिश करनी चाहिए, लेकिन आपकी वेब सेवा की मेजबान मशीन पर नहीं।

+0

यह समस्या है, चर मेजबान मशीन =/पर सिस्टम और उपयोगकर्ता स्तर दोनों पर मौजूद है। मैंने चर को जांचने के लिए सिर्फ एक कंसोल ऐप बनाया है और यह काम करता है (मुझे लगता है कि मूल्य दिखाता है) लेकिन जब मैं उसी मशीन पर आईआईएस पर होस्ट किए गए डब्ल्यूएस को कॉल करता हूं तो वही विधि खाली मान देता है। – Lemmerich

+4

ओह सी *** और मुझे बस सर्वर को पुनरारंभ करना था ... मेरा ऐप उपयोगकर्ता स्तर पर मूल्य सेट प्राप्त कर रहा था। अब समझ में आता है। धन्यवाद! – Lemmerich

+1

इसे समझने के लिए खुशी हुई। यदि आप चाहते हैं, तो मेरा उत्तर संपादित करें और सर्वर को पुनरारंभ करने के बारे में अपनी चेतावनी में जोड़ें और आपको इसे पुनरारंभ करने की आवश्यकता क्यों है। यह उत्तर अन्य लोगों की मदद कर सकता है। – sergserg

5

iisreset कमांड का उपयोग कर आईआईएस को पुनरारंभ करने की आपकी आवश्यकता।

8

मैं एक ही मुद्दे का सामना किया और धन्यवाद @sergserg को मैं इस के साथ आया था और यह काम किया:

var value = Environment.GetEnvironmentVariable(key, EnvironmentVariableTarget.User) 

महत्वपूर्ण बिट पुन: प्रारंभ हो दृश्य स्टूडियो मेरे लिए यह तय EnvironmentVariableTarget.User

+0

यह वास्तव में सिस्टम var के लिए भी काम करता है। बस .User को .Machine में बदलें। मैं पैथ var में शामिल था, और इसे पर्यावरण का उपयोग करके कोडलाइन से सेट वैल्यू नहीं मिल रहा था। गेटइन्वायरमेंटरीएरिएबल ("पाथ") पर्यावरण में बदल रहा है। गेटइन्वायरवायरवायरबल ("पाथ", एनवायरनमेंटरीटेबल टाउन। माचिन) ने नया मान पुनर्प्राप्त किया। – Zunair

+0

यह मेरे लिए भी काम किया। इसके बिना, मुझे अपने सिस्टम को पुनरारंभ करना पड़ा, भले ही मैंने उपयोगकर्ता चर जोड़ा था। –

2

उपयोग कर रहा था (अनुमान लगा आईआईएस एक्सप्रेस इन मूल्यों को भी कैश करता है)।