web.config 配置文件示例详解

这篇文章主要给大家介绍了关于.NET Core 2.0迁移技巧之web.config 配置文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

前言

相信大家应该都知道.NET Core现在不再支持原来的web.config配置文件了,取而代之的是json或xml配置文件。官方推荐的项目配置方式是使用appsettings.json配置文件,这对现有一些重度使用web.cofig配置的项目迁移可能是不可接受的。

但是好消息是,我们是可以直接在.NET Core 2.0项目种利用上现有的web.config的。本文将详细介绍.NET Core 2.0迁移之web.config 配置文件的相关内容,下面话不多说了,来一起看看详细的介绍吧。

迁移方法

1.首先在解决方案中引入System.Configuration.ConfigurationManager,只有引入它才可以让我们已有的读取web.config代码起作用.

  

2. 导入web.config文件到项目根目录,并将名称修改为app.config. 因为.NET Core的项目本质是控制台应用,所以ConfigurationManager的API会去认读取app.config配置文件,而不是web.config配置文件

3.去除config中和需要的配置无关的内容,主要是<system.web> , <system.webServer><system.codedom>等典型asp.net标签

移除前:


<?xml version=1.0 encoding=utf-8?>
<configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name=entityFramework type=System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 requirePermission=false /> </configSections> <connectionStrings> <add name=DefaultConnection connectionString=Data Source=(LocalDb)\MSsqlLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication24-20170824065102.mdf;Initial Catalog=aspnet-WebApplication24-20170824065102;Integrated Security=True
 providerName=System.Data.sqlClient /> </connectionStrings>
 <appSettings>
 <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 />
 <add key=MyKey value=true/>
 </appSettings>
 <system.web>
 <compilation debug=true targetFramework=4.7 />
 <httpRuntime targetFramework=4.7 />
 <httpModules>
 <add name=ApplicationInsightsWebTracking type=Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web />
 </httpModules>
 </system.web>
 <runtime>
 <assemblyBinding xmlns=urn:schemas-microsoft-com:asm.v1>
 <dependentAssembly>
 <assemblyIdentity name=Newtonsoft.Json culture=neutral publicKeyToken=30ad4fe6b2a6aeed />
 <bindingRedirect oldVersion=0.0.0.0-6.0.0.0 newVersion=6.0.0.0 />
 </dependentAssembly>
 <dependentAssembly>
 <assemblyIdentity name=System.Web.Optimization publicKeyToken=31bf3856ad364e35 />
 <bindingRedirect oldVersion=1.0.0.0-1.1.0.0 newVersion=1.1.0.0 />
 </dependentAssembly>
 <dependentAssembly>
 <assemblyIdentity name=WebGrease publicKeyToken=31bf3856ad364e35 />
 <bindingRedirect oldVersion=0.0.0.0-1.5.2.14234 newVersion=1.5.2.14234 />
 </dependentAssembly>
 <dependentAssembly>
 <assemblyIdentity name=System.Web.Helpers publicKeyToken=31bf3856ad364e35 />
 <bindingRedirect oldVersion=1.0.0.0-3.0.0.0 newVersion=3.0.0.0 />
 </dependentAssembly>
 <dependentAssembly>
 <assemblyIdentity name=System.Web.WebPages publicKeyToken=31bf3856ad364e35 />
 <bindingRedirect oldVersion=1.0.0.0-3.0.0.0 newVersion=3.0.0.0 />
 </dependentAssembly>
 <dependentAssembly>
 <assemblyIdentity name=System.Web.Mvc publicKeyToken=31bf3856ad364e35 />
 <bindingRedirect oldVersion=1.0.0.0-5.2.3.0 newVersion=5.2.3.0 />
 </dependentAssembly>
 </assemblyBinding>
 </runtime>
 <system.webServer>
 <validation validateIntegratedModeConfiguration=false />
 <modules>
 <remove name=ApplicationInsightsWebTracking />
 <add name=ApplicationInsightsWebTracking type=Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web preCondition=managedHandler />
 </modules>
 </system.webServer>
 <system.codedom>
 <compilers>
 <compiler language=c#;cs;csharp extension=.cs type=Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 warningLevel=4 compilerOptions=/langversion:default /Nowarn:1659;1699;1701 />
 <compiler language=vb;vbs;visualbasic;vbscript extension=.vb type=Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 warningLevel=4 compilerOptions=/langversion:default /Nowarn:41008 /define:_MYTYPE=\Web\ /optionInfer+ />
 </compilers>
 </system.codedom>
</configuration>

修改后:


<?xml version=1.0 encoding=utf-8?>
<configuration>
 <configSections>
 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
 <section name=entityFramework type=System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 requirePermission=false />
 </configSections>
 <connectionStrings>
 <add name=DefaultConnection connectionString=Data Source=(LocalDb)\MSsqlLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication24-20170824065102.mdf;Initial Catalog=aspnet-WebApplication24-20170824065102;Integrated Security=True
 providerName=System.Data.sqlClient />
 </connectionStrings>
 <appSettings>
 <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 />
 <add key=MyKey value=true/>
 </appSettings>
</configuration>

4.测试原ASP.NET代码,查看读取配置值


using System.Configuration;

namespace WebConfigTest.Configuration
{
 public class ConfigurationService
 {
 public static bool GetConfigValue(string key)
 {
 var result = false;
 var val= ConfigurationManager.AppSettings[key];
 if (val != null)
 {
 result = bool.Parse(val);
 }
 return result;
 }
 }
}

打个断点,看下读取配置值是否正确:

大功告成,读取的配置值完全正确。

大家可以使用这个方法快速迁移现有配置文件代码过去啦。

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...