- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码
var section = new CustomConfigurationSection();
section.SectionInformation.Type = "System.Configuration.NameValueFileSectionHandler";
section.SectionInformation.SetRawXml(sectionXml);
configuration.Sections.Add(sectionName, section);
最后一行抛出:
ConfigurationErrorsException An error occurred executing the configuration section handler for monitor.
内部异常:
Unrecognized element 'screens'. (line 1) (line 1)
CustomConfigurationSection 的定义:
public class CustomConfigurationSection: ConfigurationSection
{
public CustomConfigurationSection()
{
}
}
配置是自定义类的一个实例,它有一个名为 Sections 的属性,类型为“ConfigurationSectionCollection”。
而sectionXml中传入的xml是:
<monitor>
<screens>
<screen>
<regions>
<region>
<labelCoordinates />
<startupApplication>Internet</startupApplication>
<color />
<width>426</width>
<height>266</height>
<x1>0</x1>
<x2>0</x2>
<y1>0</y1>
<y2>0</y2>
</region>
</regions>
<height>800</height>
<width>1280</width>
</screen>
<screen>
<regions />
<height>0</height>
<width>0</width>
</screen>
</screens>
</monitor>
我怎样才能让它工作?
最佳答案
在查看您的示例后,我发现它不起作用的一个原因是您使用的是 NameValueFileSectionHandler。如果我没记错的话,这只允许以下语法:
<YourSectionName>
<add key="monitor.region.x" value="0"/>
<YourSectionName>
根据您要使用的 xml,您可能需要完全实现配置部分类。所以你会得到类似下面的东西:
class ServiceResponseSection : ConfigurationSection
{
[ConfigurationProperty("ServiceResponses")]
[ConfigurationCollection(typeof(ServiceResponse), AddItemName = "addServiceResponse", RemoveItemName = "removeServiceResponse", ClearItemsName = "clearServiceResponses")]
public ServiceResponses ServiceResponses
{
get { return this["ServiceResponses"] as ServiceResponses; }
}
}
public class ServiceResponses : ConfigurationElementCollection
{
public override ConfigurationElementCollectionType CollectionType
{
get
{
return ConfigurationElementCollectionType.AddRemoveClearMap;
}
}
public ServiceResponse this[int index]
{
get
{
return (ServiceResponse)this.BaseGet(index);
}
set
{
if (this.BaseGet(index) != null)
{
this.BaseRemoveAt(index);
}
this.BaseAdd(index, value);
}
}
public new ServiceResponse this[string responseString]
{
get
{
return (ServiceResponse)this.BaseGet(responseString);
}
set
{
if (this.BaseGet(responseString) != null)
{
this.BaseRemoveAt(this.BaseIndexOf(this.BaseGet(responseString)));
}
this.BaseAdd(value);
}
}
public void Add(ServiceResponse ServiceResponse)
{
this.BaseAdd(ServiceResponse);
}
public void Clear()
{
this.BaseClear();
}
protected override ConfigurationElement CreateNewElement()
{
return new ServiceResponse();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ServiceResponse)element).ResponseString;
}
public void Remove(ServiceResponse element)
{
BaseRemove(element.ResponseString);
}
public void Remove(string responseString)
{
BaseRemove(responseString);
}
public void RemoveAt(int index)
{
BaseRemoveAt(index);
}
}
public class ServiceResponse : ConfigurationElement
{
private int m_tryCount;
public ServiceResponse()
{
this.m_tryCount = 0;
}
[ConfigurationProperty("responseString")]
public string ResponseString
{
get { return (String)this["responseString"]; }
set { this["responseString"] = value; }
}
[ConfigurationProperty("matchWholeString")]
public bool MatchWholeString
{
get
{
return (bool)this["matchWholeString"];
}
set
{
this["matchWholeString"] = value.ToString();
}
}
[ConfigurationProperty("retryCount")]
public int RetryCount
{
get
{
return (int)this["retryCount"];
}
set
{
this["retryCount"] = value.ToString();
}
}
[ConfigurationProperty("failsProcess")]
public bool FailsProcess
{
get
{
return (bool)this["failsProcess"];
}
set
{
this["failsProcess"] = value.ToString();
}
}
public int TryCount
{
get { return this.m_tryCount; }
set { this.m_tryCount = value; }
}
public void Reset()
{
this.m_tryCount = 0;
}
}
这将像下面这样使用 xml:
<ServiceResponseList>
<ServiceResponses>
<clearServiceResponses/>
<addServiceResponse responseString="API Server Login Error" matchWholeString="false" retryCount="5" failsProcess="false"/>
</ServiceResponses>
</ServiceResponseList>
要点是我正在使用一个集合(你在你的例子中有,实际上有几个)。在该集合中是我所代表的一个对象。因此,要让它解析您拥有的 xml,您必须制作一个部分处理程序以匹配您正在使用的内容。
根据我的示例,您可能希望将 xml 更改为以下内容:
<monitor>
<screens>
<screen height="800" width="1280">
<regions>
<region startupApplication="Internet" width="426" height="266" x1="0" x2="0" y1="0" y2="0"/>
</regions>
</screen>
</screens>
</monitor>
然后您可以使用类似于我的示例的类。虽然您可能会得到您想要的东西,但您需要使用其他配置项才能让它以这种方式工作。
希望对您有所帮助。
关于c# - 我该如何解决 "Unrecognized element ' elementName'。 (x 行)(x 行)”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985047/
我最近将 Xcode 更新到 11.3.1 版,之后我无法运行我的应用程序。我一直收到以下异常: 2020-02-11 16:13:04.767795-0600 UVM[5204:80616] -[E
我正在尝试使用 horton 模式注册表在 kafka 中使用 avro 格式的消息。问题是,当我尝试发布 avro 消息时,我收到此错误: Caused by: com.fasterxml.jack
我正在尝试在 Red Hat Linux 上安装 MySql Server。 我已经下载了 tar文件并将其解压缩。 然后,我跑了: rpm -qpl mysql-community-server-5
在 fedora 22 上,我发现所有标准的 go 库在 go 的路径上都不可见。 注意 我确实清理了我的 golang 系统 - 所以我很确定这不是升级 go 时经常发生的混合包版本控制问题。 注意
这个问题在这里已经有了答案: systemctl command doesn't work inside docker-container (2 个回答) 8 个月前关闭。 我是 docker 新手,
如何保护注销操作?我读了default configuration并设置了 logout: csrf_parameter: _token csrf_provider:
我按照说明here按照以下步骤在 WSL 上安装 mariadb。我运行这个sudo service mysql start我有mysql: unrecognized service知道如何解决这个问
我需要选择一个隐藏字段才能将其删除。我想按类型、自定义数据属性和名称选择它。我的选择器如下所示: $("input[type=hidden] data-supplied='Cola' name='co
我正在Ubuntu 16.04上针对ARM体系结构交叉编译gpsd3.20。如您所知,gpsd使用Sconsctruct来编译源代码。在我进行交叉编译时,需要创建libgps.so的那一刻显示了unr
我正在实现 Skobbler SDK (v2.5),但我在第一步中遇到了问题。 应用程序因以下错误而崩溃:[SKVectorMapView displayTrafficWithMode:]:无法识别的
我正在使用以下命令运行 Java: java -Xms3G -Xmx3G -Xmn1G -XX:TargetSurvivorRatio=80 -XX:MaxTenuringThreshold=15 -
我正在使用 django 和 VB Linux Red Hat。我尝试过使用命令 python manage.py runserver - 192.168.1.100:8000 为了访问我的网站。到目
我正在处理使用 CodeIgniter 和 HTML5 布局的新网站。 我从我的旧网站复制了一些代码,但当我在我的新网站上尝试这个时,它给了我这个错误: Error: Syntax error, un
在用 Flex 编写 token 生成器时,我遇到了这个恼人的错误:“无法识别的规则” 我的代码是: /* Keywords */ TYPE int|double|bool|char L
我正在测试 Android Pay API。我使用命令生成了公钥 $ openssl ec -in merchant-key.pem -pubout -text -noout 和 echo $PUBL
我有几行代码可以用 Java 读取文件的内容。基本上我使用的是 FileReader 和 BufferedReader。我正在正确阅读这些行,但是,第一行的第一个字符似乎是一个 undefined s
UIView *v2 = ({ UIView *view = [UIView new]; [self.view addSubview:view]; [v
我遇到了一种情况,我有一个用 javascript 编写的表单,它为人们创建个人资料,详细说明了他们的姓名简历等。无论如何,我尝试向此表单添加一些新字段,但我添加的每个新字段都是当我尝试编辑个人资料信
在我的 ViewController 类中,我有一个函数: func updateTimes() { // (code) } 我创建了一个计时器: class ViewController: NS
我正在尝试运行 Behat(对我来说是第一次)并且成功了。 但是我有一个配置问题。我尝试像这样更改功能和 Bootstrap 的路径: #behat.yml default: paths:
我是一名优秀的程序员,十分优秀!