.NET Core 2.0迁移技巧之web.config配置文件

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

但是好消息是,我们是可以直接在.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=\&quot;Web\&quot; /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;}}
}

 

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

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

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

相关文章: 

  • .NET应用迁移到.NET Core(一)

  • .NET应用迁移到.NET Core(二)风险评估

  • .NET应用迁移到.NET Core(三)从商业角度看移植过程

  • .NET应用迁移到.NET Core--调查案例

  • 迁移传统.net 应用到.net core [视频]

  • 应用工具 .NET Portability Analyzer 分析迁移dotnet core

  • .net core 2.0学习笔记(一):开发运行环境搭建

  • .net core 2.0学习笔记(二):Hello World & 进阶

  • 度量.net framework 迁移到.net core的工作量

  • 迁移.net framework 工程到.net core

原文地址:http://www.cnblogs.com/mantgh/p/7425113.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学会它,可以替你写100行 200行 300行……的代码

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天&#xff0c;给大家分享一个非常非常使用的小技巧&#xff0c;那就是&#xff1a;“在webstrom中创建一个简单的vue模板”&#xff0c;根据这个方法&#xff0c;你可以任意的创建html模…

Java中随机数的原理,以及使用时的注意点

转载自 Java中随机数的原理&#xff0c;以及使用时的注意点 1 前言 一提到 Java 中的随机数&#xff0c;很多人就会想到 Random&#xff0c;当出现生成随机数这样需求时&#xff0c;大多数人都会选择使用 Random 来生成随机数。Random 类是线程安全的&#xff0c;但其内部使…

MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例

dotnet core 2.0 发布已经好几天了&#xff0c;期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0&#xff0c;升级过程还是比较顺利的&#xff0c;变动也不是太多。升级的过程中也少不了 Entity Framwork Core 的升级&#xff0c;在这篇文章中主要介绍下 MySql 数据库使用…

下午带着几个同学打了两节课的牌~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。大赛的项目目前正在火热进行中&#xff0c;靳天宇小组做的是扑克牌的游戏&#xff0c;除了要做大家耳熟能详的“斗地主”之外&#xff0c;另外在我的建议下准备再加两种玩法&#xff0c;一…

jzoj2137-(GDKOI2004)城市统计【二维前缀和,bfs】

正题 大意 有n*n的矩阵&#xff0c;有居民区有商业区&#xff0c;每个居民区曼哈顿距离最近的商业区的曼哈顿距离就是那个居民区离商业区的距离。每个格子统计一下以它为中心的2∗r12∗r12∗r12∗r1的矩阵内所有居民区离商业区的距离的和。 解题思路 先bfs计算所有居民离商业…

Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍

Razor Page介绍 前言 上周期待已久的Asp.Net Core 2.0提前发布了&#xff0c;一下子Net圈热闹了起来&#xff0c;2.0带来了很多新的特性和新的功能&#xff0c;其中Razor Page引起我的关注&#xff0c;作为web程序员来说&#xff0c;Asp.Net下的任何web框架都会去特别关注&…

二叉 树

文章目录递归方式 先序、中序、后序 遍历非递归方式 先序、中序、后序 遍历实现二叉树的按层遍历求二叉树的最大宽度二叉树的序列化和反序列化二叉树有 left、right、parent &#xff0c;给这样二叉树的某个结点&#xff0c;返回该节点的后继节点折纸条递归方式 先序、中序、后…

“老师,弃了吧,做个别的……”“笑话,都到这个份上了,怎么能弃掉呢?”...

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。最近项目小组一直在按照原计划做项目&#xff0c;聊天程序&#xff08;高仿版微信&#xff09;已经趋于尾声&#xff0c;做的还可以&#xff0c;剩下的就是美化和慢慢的完善小问题了&#…

IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除

转载自 IntelliJ IDEA 源值1.5已过时&#xff0c;将在未来所有版本中删除 原因&#xff1a; IDEA默认把项目的源代码版本设置为jdk1.5&#xff0c;目标代码设置为jdk1.5 解决方案&#xff1a; 1修改Maven的Settings.xml文件添加如下内容 <profile><id>jdk-1.8&…

.NET Core 2.0迁移技巧之MemoryCache问题修复

对于传统的.NET Framework项目而言&#xff0c;System.Runtime.Caching命名空间是常用的工具了&#xff0c;其中MemoryCache类则常被用于实现内存缓存。 .NET Core 2.0暂时还不支持System.Runtime.Caching dll&#xff0c;这也就意味着MemoryCache相关代码不再起作用了。 但是…

今天干了两件大事!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天干了两件大事。第一件就是为明天的“IT技能大赛”做了充足准备&#xff0c;带着6个班级的7个小组&#xff0c;在报告厅过了一遍&#xff0c;然后安排了两个后台控制同学&#xff0c;主…

JAVA后端面试100 QA之第一篇

转载自 JAVA后端面试100 Q&A之第一篇 1. synchronized和reentrantlock异同 相同点 都实现了多线程同步和内存可见性语义都是可重入锁 不同点 实现机制不同 synchronized通过java对象头锁标记和Monitor对象实现 reentrantlock通过CAS、ASQ&#xff08;AbstractQueuedSy…

P2158,jzoj1709-仪仗队【欧拉函数,数论】

正题 评测记录&#xff1a;https://www.luogu.org/recordnew/lists?uid52918&pidP2158 大意 有n∗nn∗n个点&#xff0c;求从(1,1)(1,1)可以看到多少个点。 解题思路 我们将(1,1)(1,1)当做(0,0)(0,0)&#xff0c;然后所有点往下和后移一步 我们可以发现点距离点(0,0…

asp.net core MVC 过滤器之ExceptionFilter过滤器(一)

简介 异常过滤器&#xff0c;顾名思义&#xff0c;就是当程序发生异常时所使用的过滤器。用于在系统出现未捕获异常时的处理。 实现一个自定义异常过滤器 自定义一个异常过滤器需要实现IExceptionFilter接口 public class HttpGlobalExceptionFilter : IExceptionFilter { …

今天是个特殊的一天,有意义的一天,值得纪念的一天~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天是个特殊的一天&#xff0c;筹划准备两周时间的IT技能大赛终于在报告厅顺利举行&#xff0c;全校6个班级共有7个小组参加本次技能大赛&#xff0c;大家的项目丰富多彩&#xff0c;不但…

分布式之redis复习精讲

转载自 分布式之redis复习精讲 引言 为什么写这篇文章? 博主的《分布式之消息队列复习精讲》得到了大家的好评&#xff0c;内心诚惶诚恐&#xff0c;想着再出一篇关于复习精讲的文章。但是还是要说明一下&#xff0c;复习精讲的文章偏面试准备&#xff0c;真正在开发过程中…

Nodejs第一讲记录

大家好&#xff0c; 我是雄雄&#xff0c;欢迎关注公众号 &#xff1a;雄雄的小课堂Node.jsNode的简介node是运行在服务端的JS基于谷歌 JavaScript运行时建立的一个平台是一个事件驱动IO服务端JavaScript环境&#xff0c;基于谷歌V8引擎&#xff0c;V8引擎执行JavaScript的速度…

ASP.NET Core 使用Cookie验证身份

ASP.NET Core 1.x提供了通过Cookie 中间件将用户主体序列化为一个加密的Cookie&#xff0c;然后在后续请求中验证Cookie并重新创建主体&#xff0c;并将其分配给HttpContext.User属性。如果您要提供自己的登录界面和用户数据库&#xff0c;可以使用作为独立功能的Cookie中间件。…

Node.JS第二讲笔记

大家好&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂package包包结构包其实就是一个压缩文件&#xff0c;解压之后还原为目录&#xff0c;符合规范的目录&#xff0c;应该包含如下文件&#xff1a;package.json:描述文件bin&#xff1a;可执行的二进制文件lib&#…

asp.net core MVC 过滤器之ActionFilter过滤器(二)

简介 Action过滤器将在controller的Action执行之前和之后执行相应的方法。 实现一个自定义Action过滤器 自定义一个全局异常过滤器需要实现IActionFilter接口 public class ActionFilter : IActionFilter { public void OnActionExecuted(ActionExecutedContext context) …