简体   繁体   English

如何在.NET应用程序中使用自定义配置文件或app.config

[英]How to use custom configuration file or app.config in .NET application

I have MVC5 .NET 4.6.1 C# web application I want to create a custom config file separate from web.config to store some settings my application uses. 我有MVC5 .NET 4.6.1 C#Web应用程序,我想创建一个与web.config分开的自定义配置文件,以存储我的应用程序使用的某些设置。

I tried to follow this article https://support.microsoft.com/en-us/kb/815786 我试图按照这篇文章https://support.microsoft.com/en-us/kb/815786

however the items I set in app.config: 但是我在app.config中设置的项目:

<?xml version="1.0"?>
<configuration>

    <system.web>
      <compilation debug="true" targetFramework="4.6.1" />
      <httpRuntime targetFramework="4.6.1" />
    </system.web>
  <appSettings>
      <add key="Key0" value="0" />
      <add key="Key1" value="1" />
      <add key="Key2" value="2" />
   </appSettings>

</configuration>

are not seen in my application see , eg. 在我的应用程序中看不到,例如。 they come as null: 它们为空:

string attr = ConfigurationManager.AppSettings["Key0"];

Why isn't it working? 为什么不起作用? Am I missing something? 我想念什么吗?

Alternatively I would like to create a custom config file eg. 另外,我想创建一个自定义的配置文件,例如。 mycustom.config to define my global app settings. mycustom.config定义我的全局应用程序设置。

EDIT 编辑

Solution I used 我使用的解决方案

Follwing this post https://social.msdn.microsoft.com/Forums/vstudio/en-US/11e6d326-c32c-46b1-a9a2-1fbef96f33ee/howto-custom-configuration-files?forum=netfxbcl 关注此帖子https://social.msdn.microsoft.com/Forums/vstudio/en-US/11e6d326-c32c-46b1-a9a2-1fbef96f33ee/howto-custom-configuration-files?forum=netfxbcl

In web.config: 在web.config中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
       <configSections>
              <section name="newAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
       </configSections>
       <newAppSettings file="C:\mycustom.config"/>
</configuration>

Then mycustom.config 然后mycustom.config

<?xml version="1.0" encoding="utf-8" ?>
<newAppSettings>
       <add key="OurKey" value="OurValue"/>
</newAppSettings>

And reading the value: 并读取值:

System.Collections.Specialized.NameValueCollection newAppSettings = (System.Collections.Specialized.NameValueCollection)System.Configuration.ConfigurationManager.GetSection("newAppSettings");
string key = Convert.ToDateTime(newAppSettings["OurKey"]);

You can use separate config file for connection strings and app settings: 您可以将单独的配置文件用于连接字符串和应用程序设置:

<appSettings configSource="appSettings.config" />
<connectionStrings configSource="connectionStrings.config"/>

appSettings.config file appSettings.config文件

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="Setting1" value="App setting 1" />
</appSettings>

connectionStrings.config file connectionStrings.config文件

<?xml version="1.0" encoding="utf-8"?>
<connectionStrings>
    <add name="MyConnStr1" connectionString="My connection string" />
</connectionStrings>

Usage is same as it was before: 用法与以前相同:

var setting1 = ConfigurationManager.AppSettings["Setting1"];
var connString1 = ConfigurationManager.ConnectionStrings["MyConnStr1"].ConnectionString;
            //Helps to open the Root level web.config file.
            Configuration webConfigApp = WebConfigurationManager.OpenWebConfiguration("~");

            //Modifying the AppKey from AppValue to AppValue1
            webConfigApp.AppSettings.Settings["AppKey"].Value = "AppValue1";



<appSettings>
    <add key="AppKey" value="AppValue"/>
  </appSettings>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM