ASP.NET Core 中的Main方法詳解

在本篇文章裏小編給大家整理的是關於ASP.NET Core 中的Main方法以及相關知識點總結,需要的朋友們參考下。

在 ASP.NET Core 項目中,我們有一個名爲Program.cs的文件。在這個文件中,我們有一個public static void Main()方法 。

public class Program
{
  public static void Main(string[] args)
  {
    CreateWebHostBuilder(args).Build().Run();
  }

  public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
      .UseStartup<Startup>();
}

如果您對傳統的.NET Framework 有任何使用經驗,則知道控制檯應用程序具有 Main()方法,它是該控制檯程序的入口。

但今天,我們正在創建一個 ASP.NET Core Web 應用程序而不是控制檯應用程序。因此,我們想到的一個顯而易見的問題是。 爲什麼我們也會有一個Main()方法?

所以這個知識點,要記住的。ASP.NET Core 應用程序最初作爲控制檯應用程序啓動,而Program.cs文件中的Main()方法就是入口。

因此,當運行時執行我們的應用程序時,它會查找此Main()方法以及執行配置開始的地方。

這個Main()方法配置 asp.net Core 並啓動它,此時,它成爲一個 asp.net Core Web 應用程序。因此,如果你跟蹤一下Main()方法,它會調用 CreateWebHostBuilder()方法傳遞命令行參數。

然後你就可以看到,CreateWebHostBuilder()方法返回一個實現 IWebHostBuilder 的對象。 在此對象上,調用Build()方法,會將我們的 ASP.NET Core 應用程序生成並且託管到服務器上。 在服務器上的程序調用Run() 方法,該方法運行後Web 應用程序並開始偵聽傳入的 HTTP 請求。 CreateWebHostBuilder()方法調用靜態類WebHost中的靜態方法CreateDefaultBuilder()。 CreateDefaultBuilder()方法會在服務器上創建一個已經預設置好的默認值。 CreateDefaultBuilder()方法執行多項操作來創建服務器.

我們在後面的視頻中詳細討論CreateDefaultBuilder()中的所有方法。

而現在你只需要瞭解CreateDefaultBuilder()方法是用於在服務器上創建程序配置的默認值而存在。 它作爲設置服務器的一部分,還使用了IWebHostBuilder接口中的UseStartup()的擴展方法來配置Startup類。 如果您不熟悉擴展方法的概念, 那麼你該去補課了。

按照微軟的規則,ASP.NET Core 中的啓動類名爲Startup。 這個類有 2 種方法。

public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  { }

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    if (env.IsDevelopment())
    {
      app.UseDeveloperExceptionPage();
    }

    app.Run(async (context) =>
    {
      await context.Response.WriteAsync("Hello World!");
    });
  }
}

C#

Startup 類雖然只有兩個方法,但是這兩個方法做了非常重要的事情:

ConfigureServices()方法配置應用程序所需的服務

Configure()方法配置應用程序的請求處理管道

我們理解這兩種方法的作用是非常重要。

在後面的文章中,會大量使用這兩種方法。到時候需要大家多次加深印象。

感謝大家對神馬文庫的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章