如何以编程方式读取asp.net mvc中的自定义配置文件
本文关键字:mvc 自定义 配置文件 net asp 编程 方式 读取 | 更新日期: 2023-09-27 18:13:19
在我的ASP。. NET MVC 5我有两个配置文件。一个是默认的web.config
文件,另一个是department.config
文件。
department.config
文件的内容为:
<department>
<add key="dept1" value="xyz.uvw.rst" />
<add key="dept2" value="abc.def.ghi" />
<department>
如何读取department.config
文件?
我想在这个配置文件中获得<department>
下的值的集合。
编辑:网络。config中有<department configSource="reports.config" />
如何在asp.net mvc中读取configSource文件?
<configuration>
<configSections>
<section name="departments"
type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false"
requirePermission="false" />
在你的网页。您可以指定内置的ConfigurationManager可以轻松访问的其他文件。例如,我们决定将连接字符串和应用程序设置分离到单独的文件中。你可以把它放在你的web.config中:
<appSettings configSource="appsettings.config" />
然后你可以用"常规"方式访问这些值
ConfigurationManager.AppSettings["KeyHere"]
为什么不在web.config中使用appSettings部分呢?使用ConfigurationManager对象很容易读取。
在你的网页。配置,找到appSettings部分:
<appSettings>
<add key="dept1" value="xyz.uvw.rst"/>
然后在你想要读取它的类中,导入正确的命名空间:
using System.Configuration;
然后轻松读取值,如下所示:
var dept1 = ConfigurationManager.AppSettings.Get("dept1");
如果你必须把它放在一个单独的配置中,你可以考虑为它创建一个类,我将很快发布一个例子。
edit1:这是一个快速的例子,如何做自己的自定义配置
首先,定义配置类:using System;
using System.Configuration;
namespace WebApplication2
{
public class MyConfig : ConfigurationSection
{
private static readonly MyConfig ConfigSection = ConfigurationManager.GetSection("MyConfig") as MyConfig;
public static MyConfig Settings
{
get
{
return ConfigSection;
}
}
[ConfigurationProperty("Dept1", IsRequired = true)]
public string Dept1
{
get
{
return (string)this["Dept1"];
}
set
{
this["Dept1"] = value;
}
}
[ConfigurationProperty("Dept2", IsRequired = true, DefaultValue = "abc.def.ghi")]
public string Dept2
{
get
{
return (string)this["Dept2"];
}
set
{
this["Dept2"] = value;
}
}
// added as example of different types
[ConfigurationProperty("CheckDate", IsRequired = false, DefaultValue = "7/3/2014 1:00:00 PM")]
public DateTime CheckDate
{
get
{
return (DateTime)this["CheckDate"];
}
set
{
this["CheckDate"] = value;
}
}
}
}
然后,将其设置在您的web中。配置文件:
<configuration>
<configSections>
<section name="MyConfig" type="WebApplication2.MyConfig, WebApplication2" />
</configSections>
<MyConfig Dept1="xyz.uvw.rst" Dept2="abc.def.ghi" />
...
</configuration>
然后你可以很容易地调用它,以及强类型和对多种类型的支持:
var dept1 = MyConfig.Settings.Dept1;
var dept2 = MyConfig.Settings.Dept2;
// strongly-typed
DateTime chkDate = MyConfig.Settings.CheckDate;
我就是这么做的。使用内置的东西并为它创建一个类。易于进行配置转换,易于阅读,易于使用。
这是一个古老的问题,但如果有人需要知道…第一个极客的回答列出了如何编写一个配置类。然后你指定一个自定义配置节,并在一个单独的文件中给它一个configSource。
<configuration>
<configSections>
<section name="myCustomSection" type="MyNamespace.MyCustomType" requirePermission="false" />
</configSections>
</configuration>
<myCustomSection configSource="myConfigDir'myFile.config" />
然后在你的自定义配置文件中写一个普通的xml配置
<?xml version="1.0" encoding="utf-8"?>
<myCustomSection>
<myCustomType>
<add name="pro1" value="abc" />
<add name="prop2" value="cde" />
<add name="prop3" value="efg" />
</myCustomType>
</myCustomSection>
读取配置文件的最简单方法是定义要读取的文件,如下所示:
-
webConfig
<appSettings file="TestFile.config"> <add key="webpages:Version" value="3.0.0.0"/> <add key="webpages:Enabled" value="false"/> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>
-
测试文件。配置
<appSettings> <add key="test" value="testData"/> </appSettings>