欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.Net?Core?MVC基礎(chǔ)系列之環(huán)境設(shè)置

 更新時(shí)間:2022年02月13日 10:18:35   作者:丶亡我之心不死  
這篇文章介紹了ASP.Net?Core?MVC環(huán)境設(shè)置的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

上一節(jié)我們介紹了中間件的基本使用, 這一節(jié)我們講一講.Net Core的環(huán)境設(shè)置, 以及根據(jù)不同的環(huán)境加載不同的配置信息

PS: 由于最近一直比較忙, 一直沒抽時(shí)間更新這個系列, 最近居多的博友催我, 所以繼續(xù)擠擠時(shí)間更新這個系列, 感謝大家的對本系列教程的喜歡和支持.

在實(shí)際開發(fā)中, 我們的系統(tǒng)往往會是至少兩個以上的運(yùn)行環(huán)境, 最基本的就是, 開發(fā)環(huán)境和運(yùn)營環(huán)境, 體系完整的公司, 還會有測試環(huán)境, 預(yù)發(fā)布環(huán)境, 和一些自定義環(huán)境等等, 這些環(huán)境使用的配置或是一些參數(shù)肯定是不一樣的, 我們不可能為一個環(huán)境準(zhǔn)備一份代碼, 我們可以通過環(huán)境配置, 和 一些 if 判斷, 就可以做到環(huán)境的自動切換, 下面就仔細(xì)說說.

我們先通過默認(rèn)的.Net Core MVC設(shè)置, 感受一下. 以前的代碼找不到了, 新建一個空的.Net Core MVC項(xiàng)目吧, 代碼后面會提供下載.

PS: IDE我已經(jīng)使用VS2019

建好之后, 我們打開Startup.cs代碼文件, 看Configure方法, 我相信, 有的博友已經(jīng)發(fā)現(xiàn)了, 里面的第一行代碼是個if, 意思就是判斷當(dāng)前環(huán)境是不是開發(fā)環(huán)境, 看單詞的字面意思也是這個意思, 所以學(xué)好英文對開發(fā)程序有很大的buff加成啊~~~

對于if里的是什么, 上一節(jié)已經(jīng)講過, 不再稱述.

由此我們得出, 控制環(huán)境和判斷環(huán)境, 都是在Configure方法中, 注入的IHostingEnvironment接口對象進(jìn)行的. 這里我說一下, 系統(tǒng)默認(rèn)提供的幾個判斷環(huán)境的方法. 我們使用env.Is, VS的智能提示, 可以得到下面四個方法, 如圖:

  • IsDevelopment方法大家已經(jīng)知道了, 判斷當(dāng)前是不是開發(fā)環(huán)境.
  • IsProduction方法, 判斷當(dāng)前是不是運(yùn)營(正式)環(huán)境
  • IsStaging方法, 判斷當(dāng)前是不是預(yù)運(yùn)行環(huán)境
  • IsEnvironment方法, 根據(jù)傳入的環(huán)境名稱, 判斷是不是當(dāng)前環(huán)境類型 (用于自定義環(huán)境判斷)

我們修改一下Configure方法的代碼, 修改后為:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
 
    app.Run(async (context) =>
    {
        context.Response.ContentType = "text/plain;charset=utf-8";  //防止WriteAsync方法輸出中文亂碼
        if (env.IsDevelopment())
        {
            await context.Response.WriteAsync("開發(fā)環(huán)境", Encoding.UTF8);
        }
        else if (env.IsProduction())
        {
            await context.Response.WriteAsync("運(yùn)營環(huán)境", Encoding.UTF8);
        }
        else if (env.IsStaging())
        {
            await context.Response.WriteAsync("預(yù)發(fā)布環(huán)境", Encoding.UTF8);
        }
        else
        {
            await context.Response.WriteAsync("自定義環(huán)境", Encoding.UTF8);
        }
    });
}

然后F5運(yùn)行, 瀏覽器會不出意外的輸出: "開發(fā)環(huán)境"

沒毛病, 我們修改一下編譯環(huán)境, 把Debug修改為Release, 然后生成, 如圖:

然后生成項(xiàng)目, 生成成功之后, 到項(xiàng)目的bin/Release/netcoreapp2.2目錄下, 打開CMD, 執(zhí)行dotnetUnit1.dll命令, 就會是這樣的, 如圖:

我們在瀏覽器輸入http://localhost:5000/回車, 不出意外, 會輸出: 運(yùn)營環(huán)境 四個大字.

以上的流程, 就演示了最基本的開發(fā)環(huán)境和運(yùn)營環(huán)境的配置和判斷. 下面我們演示自定義環(huán)境. 我們接著修改代碼, 為當(dāng)前環(huán)境設(shè)置個名字, 代碼如下

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
 
    env.EnvironmentName = "Cus";    //設(shè)置自定義環(huán)境名稱
 
    app.Run(async (context) =>
    {
        context.Response.ContentType = "text/plain;charset=utf-8";  //防止WriteAsync方法輸出中文亂碼
        if (env.IsDevelopment())
        {
            await context.Response.WriteAsync("開發(fā)環(huán)境", Encoding.UTF8);
        }
        else if (env.IsProduction())
        {
            await context.Response.WriteAsync("運(yùn)營環(huán)境", Encoding.UTF8);
        }
        else if (env.IsStaging())
        {
            await context.Response.WriteAsync("預(yù)發(fā)布環(huán)境", Encoding.UTF8);
        }
        else
        {
            await context.Response.WriteAsync("自定義環(huán)境", Encoding.UTF8);
        }
    });
}

F5運(yùn)行項(xiàng)目, 瀏覽器毫不意外的輸出了: 自定義環(huán)境

如果我們要輸出預(yù)發(fā)布環(huán)境的話, 只需要把EnvironmentName 屬性的值改成 "Staging" 即可, 這里不做演示, 自行嘗試, 設(shè)置代碼如下:

env.EnvironmentName = "Staging"; //設(shè)置為預(yù)發(fā)布環(huán)境

發(fā)設(shè)置為Staging和其它值的區(qū)別就是系統(tǒng)系統(tǒng)了一個IsStaging方法

為了更加直觀的演示自定義環(huán)境, 我們把else改一下, 改完之后的代碼如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
 
    env.EnvironmentName = "Cus";    //設(shè)置自定義環(huán)境名稱
 
    app.Run(async (context) =>
    {
        context.Response.ContentType = "text/plain;charset=utf-8";  //防止WriteAsync方法輸出中文亂碼
        if (env.IsDevelopment())
        {
            await context.Response.WriteAsync("開發(fā)環(huán)境", Encoding.UTF8);
        }
        else if (env.IsProduction())
        {
            await context.Response.WriteAsync("運(yùn)營環(huán)境", Encoding.UTF8);
        }
        else if (env.IsStaging())
        {
            await context.Response.WriteAsync("預(yù)發(fā)布環(huán)境", Encoding.UTF8);
        }
        else
        {
            if (env.IsEnvironment("Cus"))
            {
                await context.Response.WriteAsync("自定義環(huán)境: Cus", Encoding.UTF8);
            }
            else if (env.IsEnvironment("Cus1"))
            {
                await context.Response.WriteAsync("自定義環(huán)境: Cus1", Encoding.UTF8);
            }
            else
            {
                await context.Response.WriteAsync($"自定義環(huán)境: {env.EnvironmentName}", Encoding.UTF8);
            }
        }
    });
}

具體運(yùn)行效果和預(yù)計(jì)的一樣, 會輸出對應(yīng)的自定義環(huán)境

但是實(shí)際開發(fā)過程中, 我不推薦在代碼里面修改當(dāng)前環(huán)境, 而且通過項(xiàng)目的環(huán)境變量設(shè)置對應(yīng)的環(huán)境, 具體修改方法如下

1: 點(diǎn)開Properties

2: 打開launchSettings.json

3: 修改ASPNETCORE_ENVIRONMENT的值.

我們修改EnvironmentName屬性的代碼刪掉, 修改launchSettings.json的配置為Cus, 運(yùn)行是什么效果, 修改后的效果如圖

沒出任何以外, 瀏覽器輸出的是自定義環(huán)境: Cus, 改成其它的值, 就輸入對應(yīng)的自定義環(huán)境, 修改為Development就是開發(fā)環(huán)境,Staging就是預(yù)運(yùn)營環(huán)境,Production就是運(yùn)營環(huán)境

可能有人就要問了, 你只修改了上面的ASPNETCORE_ENVIRONMENT, 下面還有一個ASPNETCORE_ENVIRONMENT配置, 沒修改, 怎么也可以. 別急, 馬上就說明

.Net Core MVC程序, 提供了兩種托管方式, 一種是通過IIS托管, 一種是自托管, 我們剛剛修改的環(huán)境, 只修改了IIS托管模式, VS默認(rèn)又是IIS調(diào)試, 所以, 會有效果

如果使用自托管模式調(diào)試或發(fā)布運(yùn)行程序, 則修改下面的Unit1節(jié)點(diǎn)的配置即可. 當(dāng)然, VS也提供了調(diào)試方式, 切換方法, 點(diǎn)擊運(yùn)行模式即可, 如圖:

選擇Unit1, 就是自托管模式啦~ , 然后F5運(yùn)行, 瀏覽器輸出的依然是開發(fā)環(huán)境, 雖然IIS配置的是Cus環(huán)境, 但是Unit1自托管沒有修改, 我們修改一下Unit1的環(huán)境試試, 這里我修改為Cus100, 然后選擇Unit1調(diào)試, F5運(yùn)行, 瀏覽器輸出的就是

沒有任何問題

如果你覺得這種修改方式麻煩, 還有一種界面修改方法

我們在項(xiàng)目上右鍵 --> 屬性 --> 調(diào)試, 就能看到對應(yīng)的配置了, 如圖:

當(dāng)前是自托管模式, 我修改為Cus100, 這里顯示的就是Cus100, 點(diǎn)擊上面的配置文件, 還可以修改不同的托管模式的配置:

這里就不做演示了, 修改效果和直接修改launchSettings.json文件是一樣的

PS: 我們已經(jīng)把兩種托管模式的環(huán)境都設(shè)置為了默認(rèn)的Development, 開發(fā)環(huán)境.

上面已經(jīng)講完了環(huán)境的配置和切換, 下面講講根據(jù)不同的環(huán)境, 自動讀取不同的配置文件, 我們先修改一下代碼, 讓輸入的文件是從appsettings.json配置里面讀取的, 修改后的Startup類代碼如下:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Text;
 
namespace Unit1
{
    public class Startup
    {
        private readonly IConfiguration _Configuration;
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="configuration">注入或者配置文件的接口對象</param>
        public Startup(IConfiguration configuration)
        {
            this._Configuration = configuration;
        }
 
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }
 
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
 
            //env.EnvironmentName = "Cus1";    //設(shè)置自定義環(huán)境名稱
 
            app.Run(async (context) =>
            {
                context.Response.ContentType = "text/plain;charset=utf-8";  //防止WriteAsync方法輸出中文亂碼
                var msg = this._Configuration.GetValue<string>("hello");
                await context.Response.WriteAsync(msg, Encoding.UTF8);
                /*if (env.IsDevelopment())
                {
                    await context.Response.WriteAsync("開發(fā)環(huán)境", Encoding.UTF8);
                }
                else if (env.IsProduction())
                {
                    await context.Response.WriteAsync("運(yùn)營環(huán)境", Encoding.UTF8);
                }
                else if (env.IsStaging())
                {
                    await context.Response.WriteAsync("預(yù)發(fā)布環(huán)境", Encoding.UTF8);
                }
                else
                {
                    if (env.IsEnvironment("Cus"))
                    {
                        await context.Response.WriteAsync("自定義環(huán)境: Cus", Encoding.UTF8);
                    }
                    else if (env.IsEnvironment("Cus1"))
                    {
                        await context.Response.WriteAsync("自定義環(huán)境: Cus1", Encoding.UTF8);
                    }
                    else
                    {
                        await context.Response.WriteAsync($"自定義環(huán)境: {env.EnvironmentName}", Encoding.UTF8);
                    }
                }*/
            });
        }
    }
}

然后我們在appsettings.json配置中, 新增一行:"hello": "appsettings.json", 如圖:

F5執(zhí)行, 瀏覽器輸出了appsettings.json, 沒問題

然后我們點(diǎn)一下appsettings.json文件前面的箭頭, 會發(fā)現(xiàn)里面還有個appsettings.Development.json文件, 如圖:

打開appsettings.Development.json文件, 在里面和配置appsettings.json一樣, 添加個hello配置, 把值設(shè)置為appsettings.Development.json, 如圖:

然后再F5運(yùn)行, 瀏覽器輸出的就是appsettings.Development.json啦~, 這里的原因, 前面章節(jié)已經(jīng)講過, 這里不再稱述.

我們新建個appsettings.Cus.json文件, 然后在里面加個hello配置, 值為appsettings.Cus.json, 如圖:

然后再修改運(yùn)行環(huán)境為Cus, 修改方法參考上面, 然后F5運(yùn)行, 瀏覽器就輸出appsettings.Cus.json啦~

到這里, 這一節(jié)就結(jié)束了, 到目前為止, 我們對.Net Core MVC的環(huán)境和配置文件切換, 有了一個比較熟悉的了解了, 可以實(shí)際運(yùn)用一下了, 再也不用擔(dān)心不同環(huán)境不同的配置搞混了

本節(jié)代碼:下載

到此這篇關(guān)于ASP.Net Core MVC基礎(chǔ)系列之環(huán)境設(shè)置的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ASP.NET中CheckBoxList復(fù)選框列表控件詳細(xì)使用方法

    ASP.NET中CheckBoxList復(fù)選框列表控件詳細(xì)使用方法

    本文主要介紹CheckBoxList幾種常見的用法,并做出范例演示供大家參考,希望對學(xué)習(xí)asp.net的朋友有所幫助。
    2016-04-04
  • .NET6使WebApi獲取訪問者IP地址

    .NET6使WebApi獲取訪問者IP地址

    這篇文章介紹了.NET6使WebApi獲取訪問者IP地址的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • ASP.NET中HiddenField隱藏域控件的使用方法

    ASP.NET中HiddenField隱藏域控件的使用方法

    本文主要介紹ASP.NET中HiddenField控件的基礎(chǔ)使用方法、事件以及配合javascript的一些使用,希望能幫到大家。
    2016-04-04
  • 連接ACCESS數(shù)據(jù)庫時(shí)發(fā)生錯誤提示:找不到可安裝的 ISAM

    連接ACCESS數(shù)據(jù)庫時(shí)發(fā)生錯誤提示:找不到可安裝的 ISAM

    連接ACCESS數(shù)據(jù)庫時(shí)發(fā)生錯誤提示:找不到可安裝的 ISAM 檢查后發(fā)現(xiàn)原來是把Data Source寫成 DataSource了
    2011-04-04
  • ASP.NET MVC把數(shù)據(jù)庫中枚舉項(xiàng)的數(shù)字轉(zhuǎn)換成文字

    ASP.NET MVC把數(shù)據(jù)庫中枚舉項(xiàng)的數(shù)字轉(zhuǎn)換成文字

    這篇文章介紹了ASP.NET MVC把數(shù)據(jù)庫中枚舉項(xiàng)的數(shù)字轉(zhuǎn)換成文字的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • ASP.NET Core MVC中的局部視圖用法

    ASP.NET Core MVC中的局部視圖用法

    這篇文章介紹了ASP.NET Core MVC局部視圖的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • .net6引入autofac框架

    .net6引入autofac框架

    這篇文章介紹了.net6引入autofac框架的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • ASP.NET 中的Application詳解

    ASP.NET 中的Application詳解

    Application對象是HttpApplicationState類的一個實(shí)例,Application狀態(tài)是整個應(yīng)用程序全局的。本文主要詳細(xì)介紹Application對象的用法。
    2016-04-04
  • ASP.NET Core中的Options選項(xiàng)模式

    ASP.NET Core中的Options選項(xiàng)模式

    這篇文章介紹了ASP.NET Core中的Options選項(xiàng)模式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • ASP.NET?Core中的Razor頁面介紹

    ASP.NET?Core中的Razor頁面介紹

    這篇文章介紹了ASP.NET?Core中的Razor頁面,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02

最新評論