2010-01-15 10 views
7

के लिए DbProviderFactories मुझे .NET DBProviderFactories के साथ काम करने के लिए ODP.NEt लाइब्रेरी प्राप्त करने में समस्या हो रही है। स्तंभ 'InvariantName' अद्वितीय होना विवश है: मैं इस कोड के साथ निम्न त्रुटि हो रही है:.NET त्रुटि

_DBFactory = DbProviderFactories.GetFactory(providerName); 

कोई त्रुटि system.data के लिए विन्यास अनुभाग हैंडलर बनाने हुई। मान 'Oracle.DataAccess.Client' पहले से मौजूद है। Oracle.DataAccess.Client

और web.config में निम्नलिखित प्रविष्टि:

<system.data> 
    <DbProviderFactories> 
     <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
    </DbProviderFactories> 
    </system.data> 

किसी को क्या गलत है पता है

इस ProviderName साथ

? मुझे नहीं लगता कि मैंने इसे कहीं भी दो बार स्थापित किया है।

+0

एक ही समस्या और हल करें http://stackoverflow.com/questions/4225908/error-when-adding-a-configuration-to-app-config-file –

उत्तर

6

यदि आपने ओडीपी.net स्थापित किया है (उदाहरण के लिए ओरेकल सार्वभौमिक इंस्टॉलर का उपयोग करके, एक्सकॉपी के विपरीत), तो आपको उसी डीबीप्रोवाइडरफैक्टरीज/मशीन.कॉन्फिग में जोड़ दिया जाएगा।

तो इसे अपने web.config में जोड़ना इसे दूसरी बार जोड़ रहा है - इसलिए, डुप्लिकेट Oracle.DataAccess.Client!

+0

तो कौन सा स्थान "दाएं" है? – ThatAintWorking

+1

यह समस्या तब भी हो सकती है जब आपने अपने .NET4 में .NET के संस्करण को स्थापित करने से पहले ODP.net स्थापित किया हो। –

+0

@FredrikC: आपकी टिप्पणी के लिए धन्यवाद, इसे फिर से पंजीकृत करने के लिए कोई आदेश है –

5

क्या आप नीचे कर सकते हैं? (नोट "स्पष्ट")

<system.data> 
    <DbProviderFactories> 

     <clear /> 

     <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 

    </DbProviderFactories> 
    </system.data> 
1

यह ध्यान देने योग्य है कि <clear /> सभी DbProviderFactories जो आप, क्या करने के लिए अपनी स्थिति पर निर्भर करता है नहीं चाहते हो सकता है साफ हो जाएगा।

<remove invariant="Oracle.ManagedDataAccess.Client" />

यहाँ पूरे <system.data> यह कैसी दिखाई देगी:

<system.data> 
    <DbProviderFactories> 
     <remove invariant="Oracle.ManagedDataAccess.Client" /> 
     <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" 
      type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
    </DbProviderFactories> 
    </system.data> 

यह हो सकता है

तुम भी बस से पहले आप इसे इस पंक्ति जोड़कर फिर से जोड़ उस वर्ग सही निकाल सकते उपयोगी अगर आपकी स्थानीय मशीन और सर्वर वातावरण में मशीन.कॉन्फिग जैसी मेलिंग कॉन्फ़िगरेशन फ़ाइलें नहीं हैं।

दूसरी चीज जो आप कर सकते हैं बस इसे अपने web.config से हटा दें, यह मानकर कि आपके मशीन.कॉन्फिग में सेटिंग काम करेगी। हालांकि, मैं आपको विकास मशीन और आपके सर्वर दोनों पर इसका परीक्षण करूंगा। मेरे मामले में, यह एक पर काम करता था लेकिन दूसरे नहीं क्योंकि मशीन.कॉन्फिग फाइलें मेल नहीं खाती थीं। हल करने के लिए, मैं इस एक ही सेटिंग machine.config को सर्वर पर <remove invariant="Oracle.ManagedDataAccess.Client" /> तो जैसे बिना कहा:

<system.data> 
    <DbProviderFactories> 
     <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" 
      type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
    </DbProviderFactories> 
    </system.data> 
1

अधिकांश शायद मशीन कॉन्फ़िग फ़ाइल DbProviderFactories अनुभाग दुर्घटनाग्रस्त हो गया। जांचें कि क्या अतिरिक्त Oracle.DataAccess.Client लाइन है, जो अभी भी अनइंस्टॉल ऑरैक क्लाइंट के बाद बनी हुई है।

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