2009-01-16 19 views
14

मैं अटक गया हूँ! यह वास्तव में दाढ़ी लगता है लेकिन मैं नहीं देख सकता कि मैं कहां गलत हो रहा हूं। मैं 2.0 सी # एएसपी.नेट वेबसाइट बना रहा हूं।सी # कॉन्फ़िगरेशन प्रबंधक। गेटसेक्शन फ़ाइल या असेंबली लोड नहीं कर सका

DatabaseFactorySectionHandler sectionHandler = ConfigurationManager.GetSection("DatabaseFactoryConfiguration") as DatabaseFactorySectionHandler; 

मैं वस्तुओं जो Bailey.DataLayer नाम स्थान में हैं के लिए एक अलग DLL है: मैं के साथ web.config फ़ाइल में कोई कस्टम खंड का उपयोग करने की कोशिश कर रहा हूँ।

System.Configuration.ConfigurationErrorsException was unhandled by user code 

Message="An error occurred creating the configuration section handler for DatabaseFactoryConfiguration: Could not load file or assembly 'Bailey.DataLayer' or one of its dependencies. The system cannot find the file specified. (C:\\Documents and Settings\\Administrator.PIP\\My Documents\\Visual Studio 2005\\WebSites\\bailey\\web.config line 13)" 
Source="System.Configuration" 

इस प्रकार वर्ग है कि मैं पाने के लिए कोशिश कर रहा हूँ है::

namespace Bailey.DataLayer 
{ 
    public sealed class DatabaseFactorySectionHandler : ConfigurationSection 
    { 
     [ConfigurationProperty("Name")] 
     public string Name 
     { 
      get { return (string)base["Name"]; } 
     } 

     [ConfigurationProperty("ConnectionStringName")] 
     public string ConnectionStringName 
     { 
      get { return (string)base["ConnectionStringName"]; } 
     } 

     public string ConnectionString 
     { 
      get 
      { 
       try 
       { 
        return ConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString; 
       } 
       catch (Exception excep) 
       { 
        throw new Exception("Connection string " + ConnectionStringName + 
             " was not found in web.config. " + 
             excep.Message); 
       } 
      } 
     } 
    } 
} 

वेब कॉन्फ़िग फ़ाइल इस खंड है: लेकिन जब मैं test.aspx पेज को चलाने मैं निम्नलिखित त्रुटि मिलती है

<configSections> 
    <section name="DatabaseFactoryConfiguration" 
      type="Bailey.DataLayer.DatabaseFactorySectionHandler, Bailey.DataLayer" /> 
</configSections> 

मैंने इसे बिना किसी समस्या के कंसोल ऐप में किया है लेकिन वेब पेज में होने के अलावा कोई अंतर नहीं देख सकता है।

संपादित

यह सब compiles और कार्यावधि में त्रुटि फेंकता है तो मैं केवल यह मान सकते हैं कि यह विधानसभा लगता है क्योंकि यह test.aspx.cs पेज में संदर्भित है।

मैं test.aspx.cs पेज के शीर्ष पर कथन का उपयोग करें:

<configuration> 
    <configSections> 
     <section name="DatabaseFactoryConfiguration" type="Bailey.DataLayer.DatabaseFactorySectionHandler, Bailey.DataLayer" /> 
    </configSections> 
    <appSettings/> 
    <connectionStrings> 
     <add name="BaileyMDFConString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\bailey.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <DatabaseFactoryConfiguration Name="System.Data.SqlClient" ConnectionStringName="BaileyMDFConString" /> 
    <system.web>   
     <compilation debug="true"/>  
     <authentication mode="Windows"/> 
    </system.web> 
</configuration> 
+0

वास्तविक कस्टम कॉन्फ़िगरेशन अनुभाग स्वयं कहां है? –

+0

वैसे आपकी समस्या है ... आपके पास वास्तव में कस्टम अनुभाग नहीं है। –

+0

यह वहां है, लेकिन मैं कॉन्फ़िगरेशन फ़ाइल से XML को सही तरीके से प्रदर्शित करने के लिए नहीं मिल सकता, या अभी! – Jon

उत्तर

25

या तो आप गलत नाम का उपयोग कर रहे हैं (यानी यह Bailey.DataLayer.dll कहा जाता है नहीं है), या यह निर्माण पर बिन निर्देशिका में प्रतिलिपि नहीं किया जा रहा है। हालांकि यह आखिरी व्यक्ति शायद प्रतीत नहीं होता है।

(स्पष्टीकरण के लिए प्रश्न पर मेरी टिप्पणियां देखें)।

+5

धन्यवाद एंड्रयू! यह क्लिक किया गया। डीएलएल नाम को वेब कॉन्फ़िगरेशन में संदर्भित नहीं किया जा रहा था। मुझे यह नहीं पता था कि यह था वास्तविक डीएलएल मुझे रखना था, मैंने सोचा था कि यह सिर्फ नाम स्थान था। – Jon

+0

यहां http://msdn.microsoft.com/en-en/library/2tw134k3.aspx सृजन कॉन्फ़िगरेशन अनुभाग की descibed प्रक्रिया है। और एक बात है अनुभाग के साथ असेंबली वेब कॉन्फिग के समान स्तर पर होनी चाहिए जहां आप इसका उपयोग करना चाहते हैं, जैसा कि: उस असेंबली को शामिल करें जो Web.config फ़ाइल के समान निर्देशिका में सेक्शन को परिभाषित करता है। –

4

:

using Bailey.DataLayer; 

यहाँ पूरे web.config फ़ाइल है इसलिए कोई भ्रम की स्थिति है आपको कॉन्फ़िगरेशन फ़ाइल में दो प्रविष्टियों की आवश्यकता है, एक कॉन्फ़िगरेशन तत्व तत्व पर कस्टम कॉन्फ़िगरेशन अनुभाग घोषित करने के लिए, और दूसरा - वास्तविक कस्टम कॉन्फ़िगरेशन अनुभाग स्वयं। क्या आपने दोनों को जोड़ा?

उदाहरण के लिए

:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 

    <configSections> 
    **<section name="Connections" 
      type="System.Configuration.DictionarySectionHandler" />** 
    </configSections> 

    <Connections 
     <add key="myServer" value="serverName" /> 
     <add key="myPort" value="8080" /> 
     <add key="myURI" value="RequestUri" /> 
     <add key="UserId" value="joebob" /> 
     <add key="password" value="$^%^&%$^&@%" />   
    /> 

</configuration> 
+0

हाय चार्ल्स, मैंने अपनी पोस्ट को पूरी कॉन्फ़िगरेशन फ़ाइल को दिखाने और दिखाने के लिए संपादित किया है (सही ढंग से एटीएम प्रदर्शित नहीं कर रहा है। लेकिन मुझे विश्वास है कि यह सही है। मुझे डिक्शनरी हैंडलर के बारे में पता नहीं था जो कि शांत है और भविष्य में मैं इसका उपयोग करूंगा। सिस्टम के बारे में टिप के लिए thx – Jon

+0

+1.Configuration.DictionarySectionHandler - चीजों को मेरे लिए इतना आसान बना दिया! – paulH

-1

आप http://www.primaryobjects.com/CMS/Article81.aspx पर एक नज़र डालना चाहते हैं, जिसमें लाइन के लिए लगभग रेखा, कोड जो आपने ऊपर दिखाया है, जिसमें web.config फ़ाइल से एक उदाहरण शामिल है।

4

ठीक है ... मेरे पास एक ही समस्या थी। उपर्युक्त समाधानों में से कोई भी मदद नहीं करता है। मेरे मामले में मेरी कॉन्फ़िगरेशन फ़ाइल उसी dll में web.config की तरह थी। मैंने बस कॉन्फ़िगरेशन अनुभाग से नामस्थान हटा दिया और यह मेरी समस्या को ठीक कर दिया।

काम नहीं कर

<configSections> 
<section name="authorizedServerSection" type="ProjectName.ClientApi.Filters.AuthorizedServerSection, ProjectName.ClientApi.Filters" requirePermission="false"/> 

कार्य

<configSections> 
<section name="authorizedServerSection" type="ProjectName.ClientApi.Filters.AuthorizedServerSection" requirePermission="false"/> 

जैसे ही मैंने नाम स्थान से हटाया , ProjectName.ClientApi.Filters यह काम करना शुरू कर दिया।

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