2008-11-20 68 views
4

我最近開始構建Web應用程序的控制檯版本。我從我的web.config中複製了我的自定義部分。到我的app.config。當我去獲取配置信息,我得到這個錯誤:App.config - 自定義節不起作用

發生錯誤的X/Y創建配置節處理程序:未能加載類型「X」從程序集「System.Configuration

線,它不喜歡的是:

將ConfigurationManager.GetSection(「X/Y」)作爲Z返回;

任何人遇到這樣的事情?

我能夠添加

<add key="IsReadable" value="0"/> 

中的appSettings和閱讀。

增加:

<configSections> 
    <sectionGroup name="x"> 
     <section name="y" type="zzzzz"/> 
    </sectionGroup> 

    </configSections> 

回答

3

,它聽起來就像如果你想你的配置節處理程序沒有定義

<configSection> 
    <section 
      name="YOUR_CLASS_NAME_HERE" 
      type="YOUR.NAMESPACE.CLASSNAME, YOUR.NAMESPACE, Version=1.1.0.0, Culture=neutral, PublicKeyToken=PUBLIC_TOKEN_ID_FROM_ASSEMBLY" 
      allowLocation="true" 
      allowDefinition="Everywhere" 
      /> 
</configSection> 
+0

需要多少類型的部分? – 2008-11-20 20:39:30

+0

你不需要文化和公鑰來解決你的問題。請在下面查看我的短版。 – 2008-11-20 20:40:34

0

我的確有此有關自定義部分定義自定義配置處理程序,您必須定義類並引用它,如Steven Lowe所示。您可以從預定義的處理程序繼承,也可以使用appSetting部分中提供的值/密鑰對。

0

在文件的頂部,您需要在部分內部具有configSection標記。

你也可以有sectionGroup。例如:

<configuration> 
    <configSections> 
    <sectionGroup name="x"> 
     <section name="y" type="a, b"/> 
    </sectionGroup> 
    <configSections> 
</configuration> 
0

這個類的工作,作爲任何類型的普通自定義配置節處理程序...

public class XmlConfigurator : IConfigurationSectionHandler 
    { 
     public object Create(object parent, object configContext, XmlNode section) 
     { 
      if (section == null) return null; 
      Type sectionType = Type.GetType((string)(section.CreateNavigator()).Evaluate("string(@configType)")); 
      XmlSerializer xs = new XmlSerializer(sectionType); 
      return xs.Deserialize(new XmlNodeReader(section)); 
     } 
    } 

在你的app.config,添加

<section name="NameofConfigSection" type="NameSpace.XmlConfigurator, NameSpace.Assembly"/> 

並在配置添加一個屬性來指定你想要的根元素被反序列化成的類型..

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

<NameofConfigSection configType="NameSpace.NameofTypeToDeserializeInto, Namespace.Assembly" > 

... 

</NameofConfigSection> 
3

我最近有這個相同的問題。我爲一個web應用程序創建了一個自定義的sectiongroup(運行得很好),但是當我將這個圖層移植到一個控制檯應用程序時,該sectiongroup失敗了。

在您的問題中,您的部分定義中需要多少「類型」是正確的。我已經修改了你的配置部分下面的例子:

<configSection> 
    <section 
     name="yourClassName" 
     type="your.namespace.className, your.assembly" 
     allowLocation="true" 
     allowDefinition="Everywhere" /> 
</configSection> 

你會注意到,該類型現在有類名稱再進行組裝的名字。這是Web環境之外的交互所必需的。

注意:程序集名稱不一定等於您的名稱空間(對於給定的部分)。