我正在尝试在项目中实现自定义配置部分,并且我一直在遇到我不理解的异常.我希望有人能填补这里的空白.
我App.config看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="ServicesSection" type="RT.Core.Config.ServicesConfigurationSectionHandler, RT.Core"/>
</configSections>
<ServicesSection type="RT.Core.Config.ServicesSection, RT.Core">
<Services>
<AddService Port="6996" ReportType="File" />
<AddService Port="7001" ReportType="Other" />
</Services>
</ServicesSection>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我有一个ServiceConfig像这样定义的元素:
public class ServiceConfig : ConfigurationElement
{
public ServiceConfig() {}
public ServiceConfig(int port, string reportType)
{
Port = port;
ReportType = reportType;
}
[ConfigurationProperty("Port", DefaultValue = 0, IsRequired = true, IsKey = true)]
public int Port
{
get { return (int) this["Port"]; }
set { this["Port"] = value; …Run Code Online (Sandbox Code Playgroud) 如何创建自定义app.config部分,它只是一个简单的add元素列表?
我找到了一些示例(例如,如何在app.config中创建自定义配置部分?),以查看如下所示的自定义部分:
<RegisterCompanies>
<Companies>
<Company name="Tata Motors" code="Tata"/>
<Company name="Honda Motors" code="Honda"/>
</Companies>
</RegisterCompanies>
Run Code Online (Sandbox Code Playgroud)
但是,我如何避免额外的集合元素("公司"),使其看起来与appSettings和connectionStrings部分相同?换句话说,我想:
<registerCompanies>
<add name="Tata Motors" code="Tata"/>
<add name="Honda Motors" code="Honda"/>
</registerCompanies>
Run Code Online (Sandbox Code Playgroud) 我有一个appsettings.json文件,如下所示:
{
"someSetting": {
"subSettings": [
"one",
"two",
"three"
]
}
}
Run Code Online (Sandbox Code Playgroud)
当我构建我的配置根,并做类似的config["someSetting:subSettings"]事情返回null并且可用的实际设置是这样的:
config["someSettings:subSettings:0"]
有没有更好的方法来检索someSettings:subSettings列表的内容?
我试图用来ConfigurationManager.AppSettings.GetValues()检索单个键的多个配置值,但我总是收到一个只有最后一个值的数组.我的appsettings.config样子
<add key="mykey" value="A"/>
<add key="mykey" value="B"/>
<add key="mykey" value="C"/>
Run Code Online (Sandbox Code Playgroud)
而我正试图访问
ConfigurationManager.AppSettings.GetValues("mykey");
Run Code Online (Sandbox Code Playgroud)
但我只是得到了{ "C" }.
关于如何解决这个问题的任何想法?
如果我使用像这样的app.config,通过继承自System.Configuration.Section的类来获取"页面"列表的正确方法是什么?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="XrbSettings" type="Xrb.UI.XrbSettings,Xrb.UI" />
</configSections>
<XrbSettings>
<pages>
<add title="Google" url="http://www.google.com" />
<add title="Yahoo" url="http://www.yahoo.com" />
</pages>
</XrbSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我想将一维字符串数组存储为我的条目appSettings.我不能简单地用元素分隔元素,,或者|因为元素本身可以包含那些字符.
我正在考虑存储数组,JSON然后使用它反序列化它JavaScriptSerializer.
有没有"正确"/更好的方法来做到这一点?
(我的JSON想法有点像hacky)
如何在app.config中获取数组或列表信息?我希望用户能够尽可能多地放置IP(或根据需要).我的程序只需要在app.config中指定的任何内容.这该怎么做?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ip" value="x" />
<add key="ip" value="y" />
<add key="ip" value="z" />
</appSettings>
</configuration>
public string ip = ConfigurationManager.AppSettings["ip"];
Run Code Online (Sandbox Code Playgroud) app-config ×4
c# ×4
.net ×3
asp.net ×2
.net-core ×1
asp.net-4.0 ×1
asp.net-core ×1
config ×1
web-config ×1