我已经创建了一个自定义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以便我可以保留架构验证/智能感知吗?
答案 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