自定义配置部分

时间:2009-05-13 15:21:21

标签: asp.net configuration

我目前正在尝试在我忙的项目中实现自定义配置部分,无论我尝试什么,我都会收到以下错误:

{“为pageAppearanceGroup / pageAppearance创建配置节处理程序时出错:无法从程序集'System.Configuration,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'加载类型'Samples.AspNet.PageAppearanceSection' 。(E:\ Three Nine Developments \ lastfm \ msdn \ msdn \ bin \ Debug \ Samples.Aspnet.vshost.exe.config第6行)“}

我已复制此MSDN Artricle中的代码:

http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

我仍然得到同样的错误。

我已经尝试了以下文章中的所有建议/指南,但无济于事 http://www.evanclosson.com/devlog/bettercustomerrorsinaspnetcustomconfigurationsection

http://geekswithblogs.net/akraus1/articles/64871.aspx

这一定是我遗失的愚蠢行为。 我正在运行Vista,这可能是个问题吗?一些不起眼的安全设置?

    <configuration>
  <!-- Configuration section-handler declaration area. -->
  <configSections>
    <sectionGroup name="pageAppearanceGroup">
      <section
        name="pageAppearance"
        type="Samples.AspNet.PageAppearanceSection"
        allowLocation="true"
        allowDefinition="Everywhere"
      />
    </sectionGroup>
    <!-- Other <section> and <sectionGroup> elements. -->
  </configSections>

  <!-- Configuration section settings area. -->
  <pageAppearanceGroup>
    <pageAppearance remoteOnly="true">
      <font name="TimesNewRoman" size="18"/>
      <color background="000000" foreground="FFFFFF"/>
    </pageAppearance>
  </pageAppearanceGroup>



</configuration>

5 个答案:

答案 0 :(得分:19)

我的猜测是你复制了代码,但你有不同的程序集名称。发布配置将有所帮助。

我也会在配置中完全确定您的类型(样本未显示的内容)。有点像...

<section name="MySection" type="My.Assembly.Type, My.Assembly" />

答案 1 :(得分:7)

您还应该查看Jon Rista关于CodeProject上.NET 2.0配置的三部分系列文章。

强烈推荐,写得很好,非常有帮助!

马克

答案 2 :(得分:1)

请尝试使用以下代码:

<configSections>
    <sectionGroup name="pageAppearanceGroup">
         <section name="pageAppearance" type="Samples.AspNet.PageAppearanceSection,Samples.AspNet" allowLocation="true"         allowDefinition="Everywhere"       />
    </sectionGroup>     <!-- Other <section> and <sectionGroup> elements. -->
</configSections>  

答案 3 :(得分:1)

请尝试使用此

<configSections>
 <sectionGroup name="pageAppearanceGroup">
  <section name="pageAppearance"
           type="Samples.AspNet.PageAppearanceSection,Samples.AspNet"
           allowLocation="true"
           allowDefinition="Everywhere" />
 </sectionGroup>
 <!-- Other <section> and <sectionGroup> elements. -->
</configSections>  

谢谢, 韦迪

答案 4 :(得分:0)

事实证明,当您在Visual Studio中创建项目时,它会自动为项目定义根命名空间(默认情况下为项目的名称)。因此,您必须在节类型中包含该根命名空间以及您在设置类中定义的任何自定义命名空间。

例如,在原始海报的情况下,他们的工作配置可能看起来像这样:

<section name="MySection" type="ROOT_NAMESPACE.Samples.AspNet.PageAppearanceSection, NAME_OF_ASSEMBLY" />

ROOT_NAMESPACE和NAME_OF_ASSEMBLY在项目属性中定义,如项目快照中所示。

assembly name and root namespace visual studio

在我的特定情况下,我没有在我的项目中明确定义名称空间。因此,我的部分配置设置只有根命名空间,设置类的名称和程序集的名称,因此;

<section name="programSettings" type="ShipmentImport.ProgramSettings, ShipmentImport" />    

我知道它迟了几年,但我希望别人能像我一样花费数小时的时间。