ASP.NET Core系列(二):建立第一個.Net Core 項目

  新建項目
  
  新建項目, 選擇.NET Core 有以下幾種類型可選, 分別是Console, ASP.NET Core 的空項目,Web API
  
  咱們選擇ASP.NET Core Web App(MVC), 沒有標註MVC的是採用Razor pages 的項目。
  
  項目結構圖
  
  新建的項目結構以下圖所示, 大致上和ASP.NET 的Framework版本差很少, Controller、Model, View就不介紹了。
  
  大概介紹一下各個文件是幹什麼用的,後面的文章會作詳細的研究。
  
  launchSettings.json
  
  顧名思義, 這是 json格式的啓動配置文件,以下圖所示:
  
  複製代碼
  
  {
  
  "iisSettings": {
  
  "windowsAuthentication": false,
  
  "anonymousAuthentication": true,
  
  "iisExpress": {
  
  "applicationUrl": "http://localhost:9452",
  
  "sslPort": 44379
  
  }
  
  },
  
  "profiles": {
  
  "IIS Express": {
  
  "commandName": "IISExpress",
  
  "launchBrowser": true,
  
  "environmentVariables": {
  
  "ASPNETCORE_ENVIRONMENT": "Development"
  
  }
  
  },
  
  "MyFirstCore": {
  
  "commandName": "Project",
  
  "launchBrowser": true,
  
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  
  "environmentVariables": {
  
  "ASPNETCORE_ENVIRONMENT": "Development"
  
  }
  
  }
  
  }
  
  }
  
  複製代碼
  
  圖的上部分對應json中的profiles中定義的兩種配置,分別以IIS Express。基本上都是Web服務器好比URL、身份認證以及SSL等配置。
  
  wwwroot
  
  wwwroot它包含了全部的"前端"的靜態文件,  css、image、JS以及一個名爲lib的文件夾。
  
  lib中默認內容是bootstrap和jquery。
  
  在Startup中,會調用UseStaticFiles()方法, 將此目錄標記到網站根目錄。
  
  複製代碼
  
  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  
  {
  
  //.....
  
  app.UseStaticFiles();
  
  //.....
  
  }
  
  複製代碼
  
  具體靜態文件的路徑及相關自定義配置, 受權等後文詳細研究。
  
  依賴項
  
  整個項目依賴引用的類庫,這裏主要分兩部分, NuGet和SDK, 目前這兩部分下面都只有一項.
  
  Nuget:
  
  包含Microsoft.AspNetCore.App, 展開它看一下, 裏面MVC、Razor、EF以及SQLLite都要,
  
  它包含了
  
  ASP.NET Core 團隊支持的全部包。
  
  Entity Framework Core 支持的全部包。
  
  ASP.NET Core 和 Entity Framework Core 使用的內部和第三方依賴關係。
  
  這裏面是完整的AspNetCore的類庫,其實這些程序集不會隨着項目發佈一塊兒出如今部署包中, 不止沒引用的, 包括引用的也不會. 這些已經存在於部署環境中了, 因此發佈包不會變大反而會變小, 沒必要擔憂.
  
  SDK:
  
  SDk中包含了一項: Microsoft.NETCore.App, 它是.NET Core 的部分庫。 也就是 .NETCoreApp 框架。 它依賴於更小的 NETStandard.Library。
  
  相對於上面的Microsoft.AspNetCore.App, 它一樣是包含了一些程序集.但它彷佛更"基礎"一些.
  
  兩者異同
  
  Microsoft.AspNetCore.App中大部分都是Microsoft.開頭的一些程序集, 而Microsoft.NETCore.App中出現的大多數是咱們熟悉的system.XXX的.
  
  兩者的關係就像ASP.NET相對於.NET, 此處是Asp.NetCore相對於.Net Core.
  
  SDK一樣是一個大而全的集和, 在部署的時候, SDK中的引用依然不會出如今部署包中。
  
  appsettings.json
  
  這就是原來的framework版本的MVC的Web.config文件,裏面會配置系統相關的全部的配置項,好比數據庫鏈接等。
  
  默認狀況appsettings.json只有對於log日誌的相關配置。這裏就不一一說明了。
  
  複製代碼
  
  {
  
  "Logging": {
  
  "LogLevel": {
  
  "Default":www.baikayule.cn "Warning"
  
  }
  
  },
  
  "AllowedHosts": "*"
  
  }
  
  複製代碼
  
  Program.cs
  
  複製代碼
  
  public class Program
  
  {
  
  public static void Main(string[www.chengsyl.cn] args)
  
  {
  
  BuildWebHost(args).Run();
  
  }
  
  public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  
  WebHost.CreateDefaultBuilder(args)
  
  .UseStartup<Startup>(www.tdcqpt.cn)
  
  }
  
  複製代碼
  
  這裏是簡單的Main方法, 也就是應用的啓動的入口, 啓動後經過UseStartup<Startup>()指定下文的Startup啓動文件進行啓動。
  
  Startup.cs
  
  Startup類配置服務和應用程序的請求管道。這是.Net Core很是重要的地方, 包括加載配置, 經過依賴注入加載組件, 註冊路由等都在此處進行。
  
  默認的代碼中:
  
  複製代碼
  
  public class Startup
  
  {
  
  public Startup(IConfiguration configuration)
  
  {
  
  Configuration = configuration;
  
  }
  
  public IConfiguration Configuration { get; }
  
  // This method gets www.dongfangyuld.com called by the runtime. Use this method to add services to the container.
  
  public void ConfigureServices(IServiceCollection services)
  
  {
  
  services.Configure<CookiePolicyOptions>(options =>
  
  {
  
  // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  
  options.CheckConsentNeeded = context => true;
  
  options.MinimumSameSitePolicy = SameSiteMode.None;
  
  });
  
  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
  
  }
  
  // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  
  public void Configure(www.dongfangyuld.com IApplicationBuilder app, IHostingEnvironment env)
  
  {
  
  if (env.IsDevelopment())
  
  {
  
  app.UseDeveloperExceptionPage();
  
  }
  
  else
  
  {
  
  app.UseExceptionHandler("/Home/Error");
  
  app.UseHsts();
  
  }
  
  app.UseHttpsRedirection(www.feishenbo.cn);
  
  app.UseStaticFiles();
  
  app.UseCookiePolicy();
  
  app.UseMvc(routes =>
  
  {
  
  routes.MapRoute(
  
  name: "default",
  
  template: "{controller=Home}/{action=Index}/{id?}");
  
  });
  
  }
  
  }
  
  複製代碼
  
  如上圖所示, 默認狀況下設置了兩種不一樣狀態下的錯誤頁, 指定靜態文件而且設置了路由。
  
  在這裏, 咱們能夠向管道中經過中間件的方式插入咱們須要的工做內容。
  
  好比咱們還能夠用app.UseAuthentication()來作身份驗證。
  
  Startup類很是重要,涉及的內容也很是多, 好比管道機制、路由註冊、身份認證等都須要專題研究。
  
  小結
  
  項目的結構大致就是這樣,主要功能介紹完了,後面會一個一個詳細介紹各自的功能和做用。css

相關文章
相關標籤/搜索