ASP.NET5实践01:Web项目创建、结构概述、程序运行、发布部署

1.项目创建

ASP.NET5项目模板有三种:

新建项目:

选择模板:

2.结构概述

References对应配置是project.json中:

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

ASP.NET5开发时支持多版本的clr共存,但运行时是使用其中一种。

dnxcore50是跨平台、模块化的coreclr。它有多种,如:dnx-coreclr-win-*,dnx-coreclr-linux-*等。

其它是完整版的,只支持windows的clr。

当然还有一种借助mono的clr。

wwwroot是web应用程序中的静态文件存储目录,也是web发布后部署时的根目录。

其中web.config是IIS部署时需要的配置文件。

由于ASP.NET5 Web程序是应用MVC6框架,管道是:Area/Controller/Action,不是实际文件路径。

所以要使用静态文件,需要引用依赖:"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final"

并在Startup.cs中Configure()中开启:app.UseStaticFiles();

Dependencies中的Bower和npm是前端开发工具插件。

Bower的使用配置文件是:

npm插件安装配置文件是:

当然npm插件使用需要:

在gulpfile.js上右键,可以调出任务:

关于前端开发工具介绍,在以后的专题中再详细点介绍。

Controllers是控制器。

Migrations是EntityFramework手动添加迁移生成的。

Models是实体模型类。

Services是功能/业务实现类。

ViewModels是视图模型类。

Views是视图文件。

appsettings.json是配置文件。比如配置数据库连接字符串。

说一下Startup.cs文件,参见代码注释:

namespace MyWeb
{
    public class Startup
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="env">web宿主环境中运行应用程序的信息</param>
        public Startup(IHostingEnvironment env)
        {
        //用于生成应用程序中使用的基于的键/值配置设置 对象创建
            var builder = new ConfigurationBuilder()
                //将 JSON 配置提供程序的路径添加到 configurationBuilder
                .AddJsonFile("appsettings.json")
                //获取或设置的环境的名称,自动设置此属性
                //如果optional为fales时,就不用此设置。
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

            //如果是开发环境
            if (env.IsDevelopment())
            {
                 //http://go.microsoft.com/fwlink/?LinkID=532709
                 builder.AddUserSecrets();
            }

            //添加读取IConfigurationProvider环境变量的配置值
            builder.AddEnvironmentVariables();
            //生成IConfiguration 键和值
            //从提供程序集在IConfigurationBuilder.Providers 注册
            Configuration = builder.Build();
        }

        /// <summary>
        /// 键/值应用程序配置根属性,继承IConfiguration
        /// </summary>
        public IConfigurationRoot Configuration { get; set; }

        /// <summary>
        /// 程序运行时调用此方法来添加一些服务到容器中
        /// </summary>
        /// <param name="services">服务集合</param>
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<ApplicationDbContext>(options =>
                    options.UseSqlServer(                    Configuration["Data:DefaultConnection:ConnectionString"]));

            services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            services.AddMvc();

            // Add application services.            // 使用依赖注入
            services.AddTransient<IEmailSender, AuthMessageSender>();
            services.AddTransient<ISmsSender, AuthMessageSender>();
        }

        /// <summary>
        /// 配置,通常有些中间件调用需要配置等
        /// </summary>
        /// <param name="app">配置应用程序的请求管道</param>
        /// <param name="env"></param>
        /// <param name="loggerFactory">日志中间件</param>
        public void Configure(IApplicationBuilder app, IHostingEnvironment env,              ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                try
                {
                    using (var serviceScope = app.ApplicationServices                     .GetRequiredService<IServiceScopeFactory>().CreateScope())
                    {
                        serviceScope.ServiceProvider.GetService<ApplicationDbContext>()
                             .Database.Migrate();
                    }
                }
                catch { }
            }

            //IIS HttpPlatformHandler 反向代理服务器进行交互的中间件模块
            app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear());

            app.UseStaticFiles();
            app.UseIdentity();

            //配置路由
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                  name: "areaRoute",
                  template: "{area:exists}/{controller}/{action}",
                  defaults: new { action = "Index" });

                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

                routes.MapRoute(
                  name: "api",
                  template: "{controller}/{id?}");
            });

        }

        // Entry point for the application.
        public static void Main(string[] args) => WebApplication.Run<Startup>(args);
    }
}

3.程序运行

在vs2015开发中,可以用IIS Express直接运行,也可以选择web自宿主托管运行,如图:

当然,如果不用VS2015来运行,可以使用dnvm中dnx.exe(执行文件在clr里)工具来执行。

dnx.exe执行命令是对应project.json中commands配置:

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands"
  },

进入DOS下,看dnvm能用不?

VS2015中创建ASP.NET5程序后,就自动安装好dnvm了。

再试一下dnu和dnx工具:

嘎嘎!不能用。那就执行一下:

进入项目中project.json文件所在目录,执行dnx web:

OK!在不shut down情况下,就可以通过http://localhost:5000访问啦。

当然假如发布后,也可以直接执行web.cmd运行的方式。

注:如果运行不成功的话。

一般是依赖包没有下载完整,可以使用dnu restore来安装。

二是使用的clr和project.json配置的框架不一致。

4.发布部署

可以在dos下使用dnu publish命令来发布。这种方式演示就略了。

在VS解决方案中的项目上,右键“Publish Web”:

选择File System……

发布出来的目录(三个文件夹):

进入approot目录下,可以执行web.cmd命令脚本运行啦!

通常实际生产时,如何在IIS部署呢? 这里使用windows 10企业版iis测试部署。

先安装iis:

只需要勾选一下Internet Information Services一项即可!

打开IIS管理器中的“获取新的Web平台组件”:

如果没有安装,先安装它。这里我在更新vs2015时,已经安装过。

添加-安装HttpPlatformHandler。

再配置编辑器,修改节:

并解除锁定节:

准备工作基本完成啦!添加网站:

注意:连接权限设置,应用程序池需要改为无托管代码的!

测试:

5.小结

本章内容非常简单,我尽可能地截图说明!希望初学者能够学会!

项目创建,傻瓜也会的;

结构概述,这里我也不能说得很清楚,很详细。

程序运行,不管是没发布时如何运行,连发布部署后,也说过啦。

发布部署,这里介绍vs2015上如何发布,也说过常用的IIS部署。

其它方式部署,最好linux或os系统演示啦!以后再补!

读者也可以参见https://get.asp.net/ 。微软做事一向是贴心小棉袄,资料文档整理很不错。

时间: 2024-10-02 23:01:13

ASP.NET5实践01:Web项目创建、结构概述、程序运行、发布部署的相关文章

NET5实践:项目创建-结构概述-程序运行-发布部署

ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project.json中: "frameworks": { "dnx451": { }, "dnxcore50": { } }, ASP.NET5开发时支持多版本的clr共存,但运行时是使用其中一种. dnxcore50是跨平台.模块化的coreclr.它有多种,如

最全的 eclipse web 项目目录结构以及Tomcat的各个目录的作用

本文会尽可能对 java web 项目的目录结构做出最详细的解释,尽量做到浅显易懂. eclipse web 项目目录结构 java web 项目事例 03-springmvc-drien-xgq 是创建的项目名字,这个名字自己可以随便创建,只要符合命名规则. src 和 src_test 里面放的是 java 源程序,也就是你写的 java 代码,在这里为了管理方便我只是把原 src 一分为二,变成 src 和 src_test. JRE System Library: 指Java SE 的常

ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^ 工具/原料 Visual Studio 2010  ( 其他 VS 开发环境类似 ) 完成的项目程序 方法/步骤 在要发布的项目上右击,选择[发布]   在发布Web对话框中,选择发布方法为文件系统   选择要发布的路径,点击[发布]   在发布路径下,已经生成了发布的文件系统 然后就可以在IIS上发布网站啦  #^_^# END 注意事项 发布好的程序,

Eclipse创建web项目目录结构

效果图如下: 0 新建Web项目 1.右击项目MyProject进入Java Build Path 2. 点击Add Folder按钮,进入如下界面 3.选择src,点击Add New Folder按钮,创建main.test文件夹,确认 4.确认之后提示异常 can't nest... 如下图所示 5.选择MyProject/src,点击remove按钮,cannot nest...异常解决,确认之后出现如下界面: 6.点击确认 7.依次在main和test下创建java和resources文

IDEA+MAVEN+HIBERNATE+MYSQL WEB 项目创建

一.准备工作 到192.168.0.2下载安装及破解文件 IEDA的一个project可以包含多个module,可以相互调用 相当于eclipse里一个workspace包含多个project 二.创建项目 第一次打开软件直接点击 Create New Project ,左侧窗口选择maven,右侧选择项目要用到的SDK,选中“create from archetype”并选择“maven-archetype-webapp”,点击“Next”按钮: 填写groupId,artifactid,默认

Maven Web 项目创建注意事项

基本上只需要确认创建项目的Properties. (选中项目Alt+Enter) 1. 确认Java Build Path 中的Libraries 的JRE版本是否是你需要的版本,eclipse默认生成的为J2SE-1.5 2. 将Java Complier改为你当前的使用版本,如使用的jdk为1.7,则这里选则1.7 3. 如果使用web 3.0,则需要将webapp下的文件删除,打开项目Properties,点击Project Facets,将Java版本改为你当前使用版本(跟上一条保持一致

java Web项目创建之一(普通java web项目的创建与发布)

1.创建新的web项目 file->new_>Dynamic Web Project(如图) 或file->new->Project->Web->Dynamic Web Project(如图) 输入项目名,默认继续执行下一步 继续下一步 最后单击finish.创建普通web项目

主要介绍JavaEE中Maven Web 项目的结构及其它几个小问题

先说下本篇随笔的目录. 1.介绍windows中环境变量Path与ClassPath的区别. 2.可能导致命令行运行javac编译成功,但 java命令 + 所要执行的类的类名 无效的原因. 3.介绍Maven项目的结构. 4.Eclipse中添加Jar包的两种方式Add Jars 与 Add External Jars 的区别. 5.Eclipse发布项目到Tomcat上可能导致Jar包丢失的原因. 一.windows中环境变量Path与ClassPath的区别. Path变量:当你打开Win

Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建

目录: 0.前言 1.Tomcat的配置 2.第一个Web 项目 0.前言 刚刚开始接触web开发,了解的也不多,在这里记录一下我的第一个web项目启动的过程.网上教程很多,使用的java IDE 好像也是各种各样,如:如2009年发表的:谈在Eclipse中配置Tomcat ,2014年发表的:如何配置Java EE Eclipse+Tomcat开发环境 等,还有很多杂七杂八的,深感后面配置越来越简单化了,而我使用的应该算是更简单的工具了. 工具越简单化傻瓜化,背后隐藏的原理就相对更多,包装的