自定义.config文件中无法识别的属性“xmlns”

时间:2015-01-23 21:48:56

标签: c# asp.net xml asp.net-mvc

我已经创建了一个自定义System.Configuration.ConfigurationSection,我将其保存在单独的配置文件中,并通过'configSource="MyCustomConfigFile.config"'将其包含在我的web.config中

我还为自定义配置文件创建了一个.xsd架构,以添加一些好处,比如架构验证/智能感知 - 这很有效。

尝试启动应用程序时(在IIS8,.NET 4.5.1中托管) 我收到以下错误:

  

配置错误说明:期间发生错误   处理为此请求提供服务所需的配置文件。   请查看下面的具体错误详情并修改您的   配置文件适当。

     

分析程序错误消息:无法识别的属性' xmlns'。注意   属性名称区分大小写。

     

来源错误:

     

第1行:<?xml版本=" 1.0"编码=" UTF-8" ?>

     

第2行:< identityServer xmlns =" http://myCustomNamespace.xsd">

说实话,我很惊讶 - 有人能告诉我如何解决这个问题而不删除xmlns以便我可以保留架构验证/智能感知吗?

2 个答案:

答案 0 :(得分:12)

使用找到的信息here很明显,解析器无法反序列化配置部分,因为配置部分不知道'xmlns'属性 - 这实际上使PERFECT有意义。 / p>

要解决此问题,您可以将以下内容添加到C#中的自定义配置部分:

    public class MyCustomConfigurationSection
    {
private const string XmlNamespaceConfigurationPropertyName = "xmlns";
    [ConfigurationProperty(XmlNamespaceConfigurationPropertyName, IsRequired = false)]
            public string XmlNamespace
            {
                get
                {
                    return (string)this[XmlNamespaceConfigurationPropertyName];
                }
                set
                {
                    this[XmlNamespaceConfigurationPropertyName] = value;
                }
            }
    }

这完全解决了这个问题。

答案 1 :(得分:-1)

我自己没有遇到过这个问题,但您可以尝试删除项目中的“obj”文件夹,并按照以下帖子的建议进行重建。
Web.config transformation: Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive