文档章节

ASP.NET Core系列(二):创建第一个.Net Core 项目

SEOwhywhy
 SEOwhywhy
发布于 07/19 09:58
字数 1230
阅读 15
收藏 0

  新建项目
  
  新建项目, 选择.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类非常重要,涉及的内容也非常多, 比如管道机制、路由注册、身份认证等都需要专题研究。
  
  小结
  
  项目的结构大体就是这样,主要功能介绍完了,后面会一个一个详细介绍各自的功能和作用。

© 著作权归作者所有

SEOwhywhy
粉丝 8
博文 152
码字总数 335019
作品 0
私信 提问
学习ASP.NET Core Razor 编程系列十七——分组

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目...

DotNet菜园
2018/08/22
0
0
学习ASP.NET Core Razor 编程系列十六——排序

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目...

DotNet菜园
2018/08/03
0
0
学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目...

DotNet菜园
2018/07/11
0
0
学习ASP.NET Core Razor 编程系列十九——分页

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目...

DotNet菜园
03/11
0
0
《ASP.NET Core In Action》读书笔记系列,这是一个手把手的从零开始的教学系列目录

  最近打算系统学习一下asp.net core ,苦于没有好的中文书藉,只好找来一本英文的 《ASP.NET Core In Action》学习。我和多数人一样,学习英文会明显慢于中文。希望与我相同情况的人避免这...

china_fucan
01/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
312
7
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
5
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
8
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部