前言
相信大家應(yīng)該都知道.NET Core現(xiàn)在不再支持原來(lái)的web.config配置文件了,取而代之的是json或xml配置文件。官方推薦的項(xiàng)目配置方式是使用appsettings.json配置文件,這對(duì)現(xiàn)有一些重度使用web.cofig配置的項(xiàng)目遷移可能是不可接受的。
但是好消息是,我們是可以直接在.NET Core 2.0項(xiàng)目種利用上現(xiàn)有的web.config的。本文將詳細(xì)介紹.NET Core 2.0遷移之web.config 配置文件的相關(guān)內(nèi)容,下面話不多說了,來(lái)一起看看詳細(xì)的介紹吧。
遷移方法
1.首先在解決方案中引入System.Configuration.ConfigurationManager
,只有引入它才可以讓我們已有的讀取web.config代碼起作用.
2. 導(dǎo)入web.config文件到項(xiàng)目根目錄,并將名稱修改為app.config. 因?yàn)?NET Core的項(xiàng)目本質(zhì)是控制臺(tái)應(yīng)用,所以ConfigurationManager的API會(huì)去默認(rèn)讀取app.config配置文件,而不是web.config配置文件。
3.去除config中和需要的配置無(wú)關(guān)的內(nèi)容,主要是<system.web>
, <system.webServer>
和<system.codedom>
等典型asp.net標(biāo)簽。
移除前:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<?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> |
修改后:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?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.測(cè)試原ASP.NET代碼,查看讀取配置值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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; } } } |
打個(gè)斷點(diǎn),看下讀取配置值是否正確:
大功告成,讀取的配置值完全正確。
大家可以使用這個(gè)方法快速遷移現(xiàn)有配置文件和代碼過去啦。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。
原文鏈接:http://www.cnblogs.com/mantgh/p/7425113.html