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

相关文章
相关标签/搜索