【问题标题】:Unrecognized attribute 'xmlns' in custom .config file自定义 .config 文件中无法识别的属性“xmlns”
【发布时间】:2015-01-23 21:48:55
【问题描述】:

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

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

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

配置错误说明:在安装过程中发生错误 处理服务此请求所需的配置文件。 请查看下面的具体错误详细信息并修改您的 配置文件。

解析器错误消息:无法识别的属性“xmlns”。注意 属性名称区分大小写。

来源错误:

第 1 行:

第 2 行:

说实话,我很惊讶 - 谁能告诉我如何在不删除 xmlns 的情况下解决这个问题,以便我可以保留架构验证/智能感知?

【问题讨论】:

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


    【解决方案1】:

    使用找到的信息here 很明显,由于配置部分不知道“xmlns”属性这一事实,解析器无法反序列化配置部分 - 这实际上是完美的意义。

    为了解决这个问题,您可以将以下内容添加到 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;
                    }
                }
        }
    

    这完全解决了问题。

    【讨论】:

    • 如果您想指定 xsd 架构的位置,您还应该为“xmlns:xsi”和“xsi:schemaLocation”添加属性。
    • 你能详细说明一下吗?
    • 这是您发现解决此问题的唯一方法吗?我的意思是这很好用,但似乎应该有更简单的方法!
    • 这是我知道的唯一方法
    • 这个写得很好的答案似乎是基于使用适当的 asp.net 机制以一种健壮的方式扩展 web.config。只是我的意见 - 我正在尝试在我正在恢复的遗留项目上解决这个问题 - 该项目有一个利用 web.config 配置方面的第 3 方包。
    【解决方案2】:

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

    【讨论】:

    • @Peter Evans - 我看到你想提供帮助,这是正确的想法。如果您提出的建议可能对这个人有所帮助,并且没有明确定义实际解决方案的步骤 - 您可能希望将它们作为 cmets 发布到原始问题 - 有问题的人在哪里并确认/否认您的建议是有帮助。将这些 cmets 发布到问题有助于澄清情况,并且不太可能使您获得反对票。希望这对您有所帮助。
    猜你喜欢
    • 2020-07-15
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多