【问题标题】:Reading configuration section Failed读取配置部分失败
【发布时间】:2011-05-25 14:18:48
【问题描述】:

我在使用某些应用程序时遇到问题。当我在本地磁盘中执行它时一切正常,但是当我尝试从共享资源 (Z:\resource\TheApplication.exe) 执行相同的应用程序时,出现以下错误:

Error occurred creating the configuration section handler for DOMAIN/DomainUserInfo: Request failed

尝试读取配置文件中的自定义部分时发生错误:

public static class AppConfigFile {
    public static IDomainUserInfo DomainUserInfo {
        get {
            if (_domainUserInfo == null) {
                _domainUserInfo = (DomainUserInfo)ConfigurationManager.GetSection(Environment.UserDomainName + @"/DomainUserInfo");         
            } return _domainUserInfo as IDomainUserInfo;
        }
    }
}
public class DomainUserInfo : ConfigurationSection, IDomainUserInfo {
    [ConfigurationProperty("SomeConfiguration", IsRequired = true, DefaultValue = "")]
    public string SomeConfiguration { get { return (string)base["SomeConfiguration"]; } }    

    [ConfigurationProperty("OtherConfiguration", IsRequired = true, DefaultValue = "")]
    public string OtherConfiguration { get { return (string)base["OtherConfiguration"]; } }    
}

配置文件如下:

<configuration>
  <configSections>
    <sectionGroup name="THE_DOMAIN" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="DomainUserInfo" type="NameSpace.Other.DomainUserInfo,NameSpace.Other" requirePermission="false"/>
    </sectionGroup>
  </configSections>

    <THE_DOMAIN>
        <DomainUserInfo SomeConfiguration="SomeValue" OtherConfiguration="OtherValue"></DomainUserInfo>
    </THE_DOMAIN>
</configuration>

有什么想法吗?

谢谢。

【问题讨论】:

    标签: .net app-config


    【解决方案1】:

    您描述的问题是由.NET 4.0 的应用程序配置功能中的bug 引起的。

    编辑

    由于Microsoft Connect 网站的重新设计,自 Visual Studio 2012 发布以来,错误的链接大约不再可用。我再也没有在新的 Microsoft Connect 上找到缺陷,也不记得它的编号了。

    我唯一设法找到的是那个错误的链接仍然保留在 Google 的缓存中。

    作为一种解决方法,我可以使用代码打开 应用程序配置

    configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    

    然后使用以下代码阅读自定义部分:

    CustomSection1 customSection1 = (CustomSection1)configuration.GetSection("CustomSection1");
    

    注意:我在answer 找到了类似问题的解决方法。

    【讨论】:

    • @JasonDuffett 已更新答案 - 在 Microsoft 重新设计 Connect 网站后,我没有设法找到指向 .NET 缺陷的链接。
    • 当前版本的 .NET 4.0 中仍然存在该错误,但有一个(很难找到!)修补程序位于:support.microsoft.com/kb/2580188
    【解决方案2】:

    您尚未在课堂上声明 OtherConfiguration。因此,您不能将其作为配置中 DomainUserInfo 的属性。

    【讨论】:

    • 假设 [OtherConfiguration] 也被声明了,我只包含了我的代码的一部分。我觉得这个问题与安全问题有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    相关资源
    最近更新 更多