2009-10-14 9 views
5

से पेर्फन काउंटर पढ़ने से इनकार कर दिया गया है। मैं रिमोट मशीन से पेर्फॉन काउंटर पढ़ने के लिए एक सरल Asp.Net पृष्ठ बनाने की कोशिश कर रहा हूं।एक्सेस रिमोट मशीन (Asp.Net)

जब मैं दृश्य स्टूडियो विकास वेब सर्वर सब कुछ ठीक है का उपयोग करते हुए, लेकिन जब मैं आईआईएस पर जब इसकी मेजबानी की मैं एक पहुँच लाइन पर त्रुटि से इनकार किया कि परफ़ॉर्मेंस काउंटर को दर्शाता मिलता है एक ही पृष्ठ को चलाने के लिए प्रयास पेज चलाएँ:

- दोनों न काम

Exception Details: System.ComponentModel.Win32Exception: Access is denied 

मैं दोनों अनाम पहुंच का उपयोग करते हुए (अपने आप के साथ अनाम उपयोगकर्ता के रूप में) की कोशिश की है और एकीकृत विंडोज प्रमाणीकरण:

PerformanceCounter freeSpaceCounter = new PerformanceCounter("LogicalDisk", "Free Megabytes", "D:", "RemoteMachine12"); 

यह अपवाद मैं हो रही है। स्पष्ट रूप से पेर्फमॉन काउंटर (एएसपीएनईटी खाते की तरह) पढ़ने के लिए कुछ अन्य खाते का उपयोग किया जाता है। मैं अपने खाते को उस खाते के बजाय अपने खाते का उपयोग कर PerfMon काउंटर तक पहुंचने के लिए कैसे प्राप्त करूं?

उत्तर

6

समस्या आप यहाँ है कि आईआईएस (डिफ़ॉल्ट रूप से) एक स्थानीय खाते के संदर्भ के अंतर्गत चलाता है। यह स्थानीय खाता रिमोट मशीन पर मौजूद नहीं है, और इसलिए प्रदर्शन काउंटर प्राप्त करने के लिए कनेक्ट नहीं हो सकता है। जब आप वीएस विकास वेब सर्वर का उपयोग करते हैं तो यह आपके स्थानीय खाते के अंतर्गत चलता है और इसलिए सबकुछ काम करता है।

यदि आप डोमेन वातावरण में हैं तो आप आईआईएस एप्लिकेशन पूल को दोनों मशीनों तक पहुंच के साथ डोमेन खाते के रूप में चलाने के लिए कॉन्फ़िगर कर सकते हैं, और सब कुछ काम करेगा, हालांकि आप इस पर अधिक नियंत्रण चाहते हैं।

आप या तो प्रतिरूपण के लिए कॉन्फ़िगर किए गए एप्लिकेशन के साथ मूल प्रमाणीकरण का उपयोग कर सकते हैं (या यदि आप प्रमाणीकृत खाते के तहत चलाने के लिए कॉन्फ़िगर किए गए पूल वाले आईआईएस 7 का उपयोग कर रहे हैं) या काउंटर पढ़ने से पहले आप प्रतिरूपण करते हैं।

तरीके प्रतिरूपित करने के लिए की एक जोड़ी रहे हैं - सबसे सुरक्षित एकीकृत प्रमाणीकरण का उपयोग करने के लिए और फिर कॉल लपेट

PerformanceCounter freeSpaceCounter = null; 
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
{ 
    freeSpaceCounter = new PerformanceCounter("LogicalDisk", 
           "Free Megabytes", "D:", "RemoteMachine12"); 
} 

आप प्रमाणीकरण नहीं करना चाहते हैं तो आप कॉन्फ़िगर करना होगा आईआईएस कॉन्फ़िगर करने के लिए है ऐप पूल, या हार्ड एप्लिकेशन आपके एप्लिकेशन में उपयोगकर्ता नाम और पासवर्ड - यह अंतिम उपाय होना चाहिए, KB306158

+0

धन्यवाद - यह वही जवाब है जो मैं ढूंढ रहा था, एक इलाज किया! – Justin

2

MSDN से:

विंडोज विस्टा, विंडोज XP Professional x64 संस्करण, या Windows Server 2003 में प्रदर्शन काउंटरों पढ़ने के लिए, आप या तो प्रदर्शन मॉनिटर उपयोगकर्ता समूह का सदस्य होना या व्यवस्थापकीय विशेषाधिकार होने चाहिए।

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