ASP.NET Core项目目录结构介绍
我们下面通过在Visual Studio 2017中创建一个空的Web应用程序来详细说明下asp.net core项目目录结构: ? 1、项目结构说明 ? (1)、依赖项 这里主要分两部分SDK,目前这两部分下面都只有一项。 ? Nuget 包含Microsoft.AspNetCore.App,展开它看一下MVC、EF等等都有,它包含了: · ASP.NET Core 团队支持的所有包。 · Entity Framework Core 支持的所有包。 · Entity Framework Core 使用的内部和第三方依赖关系。 猛地一看,这是一非常大而全的包了asp.net core模块化有点不一致,非常不爽。 其实这些程序集不会随着项目发布一起出现在部署包中,所以发布包不会变大反而会变小,不必担心。 SDK: SDK中包含了一项: Microsoft.NETCore.App,它是.NET Core 的部分库。 也就是 .NETCoreApp 框架。 它依赖于更小的 NETStandard.Library。 SDK同样是一个大而全的集和,在部署的时候,SDK中的引用依然不会出现在部署包中,如下图,是不是很精简。 ? (2)、launchSettings.json 顾名思义,这是一个启动配置文件,json格式的。 通过上面的项目结构图可以发现,常见的web.config或app.config等xml格式的config文件找不到了,取而代之和的都是json。 打开这个json看一下。 一项项的不好解释,不过我们可以通过windows 中的 vs2017中的图形化的配置界面(右键当前项目->属性->调试),如下图所示: ? (3)、wwwroot文件夹 看这名字好像是IIS的默认网站根目录,它包含了所有的"前端"的静态文件,css、images、js、一个名为lib的文件夹和favicon.ico图标文件。 lib中默认内容是bootstrap和jquery相关内容。 在Startup中,会调用一个无参数的UseStaticFiles()方法,将此目录标记到网站根目录。 ? ? Startup.cs 的区别在于Startup.cs ,这个可以通过 Program.cs 中的代码看出来: WebHost.CreateDefaultBuilder(args).UseStartup<Startup>(); ? 曾经使用过 ASP.NET,我们大家都知道以下两点: 1、Global.asax 文件,可以在启动 Web 应用程序期间编写代码来执行的一个地方。 2、 Web.config 文件,用来包含应用程序需要执行的所有配置参数。 但是在 ASP.NET Core 中,这些文件全部消失,取而代之的是使用 Startup.cs 加载配置和启动代码。 Startup.cs文件中有一个 Startup 类,在这个类中可以配置应用程序,甚至配置配置源。 ? 2、项目启动介绍 应用程序入口类 ? 这是一个大家非常熟悉的Main方法,也就是应用的起点,启动后通过UseStartup<Startup>()指定下文的Startup启动文件进行启动。 在应用启动的时候,会执行CreateWebHostBuilder方法,在这个方法中通过类Startup创建了默认的HostBuilder。 3、应用启动类 ? ? ? 这是.NET Core非常重要的地方,包括加载配置,通过依赖注入加载组件,注册路由等都在此处进行。 Startup 类必须是公开的,且必须包含以下两个方法 1、ConfigureServices()方法 public void ConfigureServices(IServiceCollection services){ } ? ConfigureServices() 方法用于定义应用程序所需要的服务,例如 ASP.NET Core MVC 、 Entity Framework Core 和 Identity 等等。 2、Configure()?方法 public void Configure(IApplicationBuilder app,IHostingEnvironment env){ } ? Configure() 用于定义请求管道中的中间件。 ? Web项目模板默认在项目启动的时候调用IApplicationBuilder.run方法,在当前HTTP上下文(HttpContext)中输出了Hello World! Startup 类中的 Configure() 方法用于配置和构建 HTTP 请求管道的地方。该怎么理解这句话呢? 其实也就是说,Configure() 方法可以用来定义我们的应用程序如何响应请求。对于任意网址,默认情况下它只会输出 Hello World! 例如,如果我们想要为诸如 index.html 之类的静态文件提供服务,则需要向 Configure() 方法添加一些代码。 例如,如果想要给 ASP.NET MVC 控制器发送错误页面或路由请求,都需要在这个 Configure() 方法中做一些工作。 比如我们还可以用app.UseAuthentication()来做身份验证。 我们使用 Use、Run 和 Map 来配置 HTTP 管道。 Use 方法可使管道短路(即不调用 next 请求委托)。 Run 是一种约定,并且某些中间件组件可公开在管道末尾运行的 Run[Middleware] 方法。 Map* 扩展用作约定来创建管道分支。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用Visual Studio进行调试,ASP.NET MVC上的
- asp.net-mvc – ASP.NET MVC在调用方法时查找调用方法!Mod
- asp.net-mvc-3 – Structuremap,AutoFac或Ninject,哪一个适
- ASP.NET报告系统
- 如何实现ASP.NET购物车?
- asp.net-mvc-3 – 实体框架检测到冲突的更改.尝试使用相同的
- ASP.NET Handler(ashx)vs MVC Controller Action用于下载文
- 如何在实时服务器上调试asp.net应用程序
- asp.net-mvc-3 – ASP.NET MVC – 在不重写方法的情况下扩展
- asp.net-mvc – Web路由如何工作?
- asp.net – Page.IsValid如何工作?
- asp.net – X509Certificate2 – 系统找不到指定
- asp.net core中AddTransient,AddScope和AddSing
- asp.net – VB.NET – 如何使用Active Directory
- asp.net-web-api – 使用Fiddler进行包含OData命
- asp.net-mvc – 为什么.NET在MVC asp.net应用程序
- asp.net-mvc-4 – 是否可以将MVC Razor视图保存到
- asp.net – WCF服务问题 – 不支持协议“http”.
- asp.net – IIS不下载胡须文件
- ASP.NET Core中Middleware的使用