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

Mac*_*iek 5 c# xml asp.net asp.net-mvc

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

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

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

配置错误说明:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.

分析器错误消息:无法识别的属性"xmlns".请注意,属性名称区分大小写.

来源错误:

第1行:<?xml version ="1.0"encoding ="utf-8"?>

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

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

Mac*_*iek 12

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

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

这完全解决了这个问题.