2010-06-04 15 views
11

को फिर से खोलने पर त्रुटि मेरे पास एक नेटटीसीपी बाइंडिंग और एक एंड एंडपॉइंट के साथ एक वर्किंग सर्विसहोस्ट है।डब्ल्यूसीएफ "काउंटरसेट में इंस्टेंस पहले से मौजूद है" सर्विसहोस्ट

I .Close() यह। फिर, मैं एक नया सर्विसहोस्ट उदाहरण बना देता हूं, जैसा कि पहले कॉन्फ़िगरेशन के समान होता है।

System.ArgumentException occurred 
    Message=Instance '[email protected]:||localhost:2718|game|' already exists in CounterSet 'e829b6db-21ab-453b-83c9-d980ec708edd'. 
Parameter name: InstanceName 
    Source=System.Core 
    ParamName=InstanceName 
    StackTrace: 
     at System.Diagnostics.PerformanceData.CounterSetInstance..ctor(CounterSet counterSetDefined, String instanceName) 

कोई भी व्यक्ति उस पहले देखा है: तब, मैं इस बहुत ही अजीब अपवाद हो रही है जब मैं नया उदाहरण .Open() करने की कोशिश? क्या यह .NET Framework में एक बग है (मैं 4.0 का उपयोग कर रहा हूं)?

मेरी ServiceHost के बारे में शायद प्रासंगिक जानकारी:

  • कोई भी ग्राहक, मेजबान से जुड़े हैं जब वह पहली बार बंद कर दिया है;
  • एक कस्टम IInstanceProvider उदाहरण बनाने के लिए उपयोग किया जाता है;
  • बाध्यकारी ReliableSession चालू है;
  • सेवा का प्रकार नीचे ServiceBehavior के साथ चिह्नित है;

[ServiceBehavior(
IncludeExceptionDetailInFaults = true, 
InstanceContextMode=InstanceContextMode.PerSession, 
ConcurrencyMode=ConcurrencyMode.Reentrant, 
UseSynchronizationContext = false 
)] 

मैं किसी भी अतिरिक्त जानकारी को प्रकट करने के लिए खुला हूं जिसे आप एप्लिकेशन के बारे में जानना चाहते हैं।

अद्यतन 1 मैंने एप्लिकेशन लक्ष्यीकरण .NET 3.5 संकलित किया और त्रुटि नहीं हुई। दुर्भाग्य से, मुझे Task में भरोसा रखने वाली सभी चीज़ों को निष्क्रिय करना होगा।

अपडेट 2 मैंने इस समस्या के बारे में bug at Microsoft Connect लॉग किया है। मुझे लगता है कि इस सवाल का जवाब पहले ही दिया जा चुका है।

+0

क्या आप एक पूर्ण स्टैक ट्रेस जानकारी प्रदान कर सकते हैं? –

+0

'अपवाद' – jpbochi

उत्तर

7

यह .NET Framework 4.0 के साथ एक बग है। मैंने इसके बारे में bug at Microsoft Connect लॉग किया।

यहाँ Microsoft से इस सवाल का जवाब है:

यह एक ज्ञात समस्या की तरह लग रहा तंग बंद/खुला ServiceHost के अनुक्रम में मुद्दों समय की वजह से । ServiceHost कुछ प्रदर्शन काउंटर बनाए रखता है जो इस अपवाद के लिए एकत्रित कचरा नहीं मिल सकता है। मुझे लगता है कि आप नेट फ्रेमवर्क 4.0 का उपयोग कर रहे हैं? एक मजबूर जीसी करके वैकल्पिक हल के लिए इससे पहले कि आप दूसरे ServiceHost खोलने का प्रयास करें:

GC.Collect() 
GC.WaitForPendingFinalizers() 

कर वे क्या समस्या हल की सलाह दी। मुझे उम्मीद है कि यह बाद में रिलीज में तय हो जाएगा।

+0

में स्टैकट्रैक खाली है या वापस आ गया है। :(मुझे सुरक्षा हॉटफिक्सेस के लिए एमएस से आखिरी अपडेट के बाद से यह मिल रहा है। मेरे कोड में एकमात्र अंतर यह है कि मैं एक टीसीपी एंडपॉइंट की बजाय यूडीपी एंडपॉइंट का उपयोग कर रहा हूं। जीसी वर्कअराउंड जोड़ने से इस मुद्दे को हल नहीं किया गया। देखेंगे कि मैं एमएस पर क्या पा सकता हूं। –

+1

मेरे लिए इस समाधान ने समस्या को हल किया। धन्यवाद! – Ikaso

4

इस समस्या का डब्लूसीएफ सेवा से कोई संबंध नहीं है, लेकिन सिस्टम.ServiceModel.Diagnostics पर, जो प्रदर्शन काउंटर द्वारा सेवा की निगरानी करने की अनुमति देता है। यह प्रत्येक सेवा होस्ट के लिए काउंटर सेट बनाता है और ServiceHost पैरामीटर द्वारा सेट के लिए नाम उत्पन्न करता है। और, यदि एक ही पैरामीटर के साथ मेजबान पहले से मौजूद है - यह इस अपवाद का कारण बन जाएगा। See Microsoft sources here (GUID द्वारा पाया गया था)।सेवाओं के लिए बस बंद कर देते हैं प्रदर्शन काउंटरों: यह aviod करने के लिए आसान है

  1. app.config तक (परीक्षण किया)

    <configuration> 
        <system.serviceModel> 
         <diagnostics performanceCounters="Off" /> 
        </system.serviceModel> 
    </configuration> 
    
  2. क्रम (परीक्षण नहीं)

    using System.Configuration; 
    using System.ServiceModel.Configuration; 
    using System.ServiceModel.Diagnostics; 
    
    Configuration config = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None); 
    ServiceModelSectionGroup sg = ServiceModelSectionGroup.GetSectionGroup(config); 
    sg.Diagnostic.PerformanceCounters = PerformanceCounterScope.Off; 
    config.Save(); 
    
में

पीएस मुझे यह समस्या वीएस 2012, नेट 4.5 और वीएस 2010, नेट 4.0 पर मिली। मुझे लगता है, यह सॉफ्टवेयर कॉन्फ़िगरेशन (वीएस?) से संबंधित है, लेकिन मुझे नहीं पता कि कौन सा सॉफ़्टवेयर और कौन सा पैरामीटर है। मेरे सहकर्मियों को सामान्य रूप से, एक ही वातावरण का उपयोग करने में ऐसी कोई समस्या नहीं है।

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