<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      深入淺出Blazor webassembly之程序配置


      =================================
      launchsettings.json profiles 定義文件
      =================================
      文件位置: roperties\launchSettings.json, 該文件在 dotnet core 項目啟動時會被自動加載, 不同的dotnet項目類型, 會有不同格式的launchsettings.json, 一旦項目類型確定后, 這個json文件的可配置項也就確定下來了, 所以我們不能在該json文件中增加配置項.

      對于 BlazorWebAssembly 類型的項目, 這個配置文件包含兩個部分, 一個是 iisSettings 配置(不重要, 暫時忽略), 另一個是 profiles 配置. 默認 BlazorWebAssembly 提供了兩個 profile, 我們也可以增加新的 profile, 比如增加 stg/dev/prod 幾個環(huán)境的profile.

      但需要說明的是, 因為 launchsettings.json 格式是固定的, 這里僅僅是增加了多個stg/dev/prod profile 名, 我們不能直接在這里增加自定義的配置項.

      如何為 dotnet 程序指定 profile?
      在 dotnet run 命令行中加上  --launch-profile 參數(shù), 即可指定要加載的 profile.
      dotnet run  --launch-profile <launch-profile>  

      可以在該 json 文件頭指定其 schema 信息, 這樣 vscode 就能提供自動補全編輯功能.
      "$schema":"http://json.schemastore.org/launchsettings.json"


      定義一個 blazorDemo1-dev profile:

          "blazorDemo1-dev": {
            "commandName": "Project",
            "dotnetRunMessages": "true",
            "launchBrowser": true,
            "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
            "applicationUrl": "http://localhost:5000",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "dev"
            }
          }

      需要特別說明的是:
      commandName 是指定 asp.net core 的啟動模式, 取值應(yīng)該設(shè)置為 Project,  但我估計對于blazor wasm 應(yīng)該不重要
      ASPNETCORE_ENVIRONMENT 設(shè)定具體的env名, 這個env在 appsettings.json 文件中會使用到.
       
      啟用 blazorDemo1-dev profile的命名:

      dotnet run  --launch-profile  blazorDemo1-dev

       

      =================================
      appsettings.json 應(yīng)用程序自定義配置文件
      =================================
      launchSettings.json 不允許增加自定義配置項, 但 wwwroot\appsettings.json 可以增加, 甚至可為不同的 env 定義不同的 appsettings.json 文件, 文件名規(guī)范是:  appsettings.{ASPNETCORE_ENVIRONMENT}.json

      以 blazorDemo1-dev profile 為例, 因為 ASPNETCORE_ENVIRONMENT 取值為 dev, 所以可增加一個 appsettings.dev.json 配置文件, 這樣就相當于有兩個配置文件, appsettings.json 和  appsettings.dev.json , 如果一個配置項在兩個文件中都定義了, 自然以指定環(huán)境的配置文件為準.

      需要說明的是 appsettings.json 配置文件, 在瀏覽器端是完全可見的, 所以不能用來存儲敏感信息.
      appsettings.json 文件內(nèi)容:

      {
          "appid":"appid123",     //普通key value
          "aaa.a1":"default",     //構(gòu)造多層 section , 代碼上不認為是多層  
          "bbb":{                 //構(gòu)造真實的多層 section       
              "b1":"b1value",
              "b2":"b2value"
          },
          "ccc:c1":"c1value",      //另一種構(gòu)造真實的多層 section 的寫法,完全等價于上面 bbb section  
          "ccc:c2":"c2value"   
      }

       

      Program.cs 文件讀取配置的代碼:

       public static async Task Main(string[] args)
      {
          var builder = WebAssemblyHostBuilder.CreateDefault(args);
      
          builder.RootComponents.Add<App>("#app");
          builder.Services.AddScoped(sp => new HttpClient { 
              BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
      
          //讀取 appsettings.json 文件的 aaa.a1 取值
          var a1=builder.Configuration["aaa.a1"]; 
          Console.WriteLine("aaa.a1="+a1);
          
          //多層section取值, 方法1: 使用Bind的方式先獲取第一層 section, 然后使用 Dictionary<k,v> 來獲取第二層 section值
          var dict=new Dictionary<string, string>();
          builder.Configuration.Bind("bbb",dict);   
          Console.WriteLine("bbb:b1="+dict["b1"]); 
          
          //多層section取值, 方法2: 使用冒號表達葉子節(jié)點, 即可直接獲取葉子節(jié)點的值  
          var b1Another=builder.Configuration["bbb:b1"]; 
          Console.WriteLine("bbb:b1="+b1Another);
          
          await builder.Build().RunAsync();
      }

       

      =================================
      為應(yīng)用程序增加基于內(nèi)存的Configuration data
      =================================

      上面講過 appsettings.json 會被自動下載到瀏覽器端, 所以絕對不能存敏感, 這里給出一個安全性稍微好一點的方法, 將配置項寫死到C#代碼中, 微軟提供了MemoryConfigurationSource 類, 使用這個類設(shè)置配置項, 在讀取的時候, 完全和 appsettings.json 一樣, 非常方便.

       

      Program.cs 文件設(shè)置配置的代碼:

      using Microsoft.Extensions.Configuration.Memory;
      
      public static async Task Main(string[] args)
      {
          //other code
          var builder = WebAssemblyHostBuilder.CreateDefault(args);
      
          var dict2=new Dictionary<string, string>();
          dict2.add("xxx.x1":"x1value"); //包含xxx.x1一個層次section 
          dict2.add("yyy:y1":"y1value"); //包含yyy 和 y1兩個層次section 
          dict2.add("yyy:y2":"y2value"); //包含yyy 和 y2兩個層次section 
          var memoryCfg=new MemoryConfigurationSource(){InitialData=dict2};
          builder.Configuration.Add(memoryCfg);
          
          //other code
      }

       

      =================================
      在 razor 文件中使用依賴注入的方式獲取 configuration data
      =================================

      前面示例都是在 Program.cs 中讀取 appsettings 設(shè)置, 其實在 razor 文件中, 讀取也非常方便, 注入一個 IConfiguration 對象.

      @using Microsoft.Extensions.Configuration
      @inject IConfiguration Configuration 
      
      public void getCfgValue()
      {
      
          //讀取 appsettings.json 文件    
          var x1=Configuration["xxx.x1"]; 
          Console.WriteLine("xxx.x1="+x1);
          
          var y1=Configuration["yyy:y1"]; 
          Console.WriteLine("yyy:y1="+y1);    
       
      }

       

      posted @ 2021-08-30 23:32  harrychinese  閱讀(1150)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费午夜无码视频在线观看| 永久国产盗摄一区二区色欲| 蜜桃av亚洲第一区二区| 窝窝午夜色视频国产精品破| 国产第一页浮力影院入口| 日夜啪啪一区二区三区| ww污污污网站在线看com| 麻豆国产成人av高清在线| 精品亚洲香蕉久久综合网| 吉木萨尔县| 巨熟乳波霸若妻在线播放| 精品中文人妻中文字幕| 最新国产精品好看的精品| 搡老女人老妇女老熟妇| 唐人社视频呦一区二区| 建湖县| 国产一区二区三区小说| 久久精品国产6699国产精| 国产免费播放一区二区三区| 亚洲精品中文字幕在线观| 欧美人伦禁忌dvd放荡欲情| 加勒比久久综合网天天| 开心一区二区三区激情| 巨爆乳中文字幕爆乳区| 国产日韩入口一区二区| 亚洲中文字幕无码永久在线| 伊人激情av一区二区三区| 国产精品午夜福利合集| 黑人大战中国av女叫惨了| 无码中文字幕人妻在线一区| 国产一级毛片高清完整视频版| 西西人体大胆444WWW| 韩国无码AV片午夜福利| 国产av仑乱内谢| 中文字幕精品人妻丝袜| 99精品免费久久久久久久久日本| 国产精品免费AⅤ片在线观看| 亚洲av天堂综合网久久| 777奇米四色成人影视色区| 欧美亚洲一区二区三区在线| 亚洲国产精品无码观看久久 |