03、手工创建Asp.Net Core 2.0 web应用程序(探索最小架构)

一、创建一个干净的控制台程序

这里我们使用的开发工具是VS2017

项目只有一个Program.cs类。

二、让控制台程序可以响应Web请求

1.让控制台程序成为Web宿主,需要引用WebHost包

Microsoft.AspNetCore.Hosting

2.我们不想用IIS作为服务器,可以使用Kestrel作为Web服务器

Microsoft.AspNetCore.Server.Kestrel

3.使用Nuget应必要包之后的项目结构

4.指定Web服务器,并启动WebHost

在Main方法中加入如下代码

using Microsoft.AspNetCore.Hosting;

namespace MyWeb
{
    class Program
    {
        static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()           // 指定WebServer为Kestrel
                .UseStartup<Startup>()  // 配置WebHost
                .Build();

            host.Run();                 // 启动WebHost
        }
    }
}

新建一个Startup类,用于配置WebHost

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;

namespace MyWeb
{
    class Startup
    {
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            app.Run(c => {
                return c.Response.WriteAsync("Hello dotnet core.");
            });
        }
    }
}

5.启动我们这个干净的Web应用程序

6.访问网站

7.让网站的响应能力强一点

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;

namespace MyWeb
{
    class Startup
    {
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            app.Run(c => {
                var req = c.Request.Path.ToString().TrimStart(‘/‘);
                var res = string.Empty;

                switch (req)
                {
                    case "1":
                        res = "one";
                        break;
                    case "2":
                        res = "two";
                        break;
                    default:
                        res = "none";
                        break;
                }

                var mtd = string.Empty;
                switch (c.Request.Method)
                {
                    case "GET":
                        mtd = "请求方式: get";
                        break;
                    case "POST":
                        mtd = "请求方式:post";
                        break;
                    default:
                        mtd = "请求方式:none";
                        break;
                }

                return c.Response.WriteAsync(res);
            });
        }
    }
}

效果如下:

至此,我们使用Asp.Net Core 2.0创建了一个最小架构的Web应用程序。

8.查看一下编译后的文件

我们并没有看到我们使用Nuget应用的两个包,这也说明.NetCore2.0做了运行时包仓优化。参考:02、NetCore2.0--引用系统和第三方包时的优化

时间: 2024-09-30 19:29:53

03、手工创建Asp.Net Core 2.0 web应用程序(探索最小架构)的相关文章

独立部署asp.net core 2.1 Web应用程序

1.创建asp.net core 2.0  Web应用程序 添加引用: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Design 2.配置Sqlite数据库 修改Startup.cs文件:services.AddDbContext<ApplicationDbContext>(options =>options.UseSqlite("Data Source=Applicatio

【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)

工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相关知识就不介绍了, 这里主要是从头编写一个asp.net core 2.0 web api的基础框架. 我一直在关注asp.net core 和 angular 2/4, 并在用这对开发了一些比较小的项目. 现在我感觉是时候使用这两个技术去为企业开发大一点的项目了, 由于企业有时候需要SSO(单点登

从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

原文:从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置 第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分:http://www.cnblogs.com/cgzl/p/7652413.html Github源码地址:https://github.com/solenovex/Building-asp.net-co

从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD

原文:从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD 第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分:http://www.cnblogs.com/cgzl/p/7652413.html 第4部分:http://www.cnblogs.com/cgzl/p/7661805.html Github源码

从头编写 asp.net core 2.0 web api 基础框架 (3)

原文:从头编写 asp.net core 2.0 web api 基础框架 (3) 第一部分:http://www.cnblogs.com/cgzl/p/7637250.html 第二部分:http://www.cnblogs.com/cgzl/p/7640077.html Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch 之前我介绍完了asp

从头编写 asp.net core 2.0 web api 基础框架 (2)

原文:从头编写 asp.net core 2.0 web api 基础框架 (2) 上一篇是: http://www.cnblogs.com/cgzl/p/7637250.html Github源码地址是: https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch 本文讲的是里面的Step 2. 上一次, 我们使用asp.net core 2.0 建立了一个Empty pr

从头编写 asp.net core 2.0 web api 基础框架 (1)

原文:从头编写 asp.net core 2.0 web api 基础框架 (1) 工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相关知识就不介绍了, 这里主要是从头编写一个asp.net core 2.0 web api的基础框架. 我一直在关注asp.net core 和 angular 2/4, 并在用这对开发了一些比较小的项目. 现在我感

【转载】从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch 前三部分弄完,我们已经可以对内存数据进行CRUD的基本操作,并且可以在asp.net core 2中集成Nlog了. 下面继续: Entity Framework Core 2.0 Entity Framework 是ORM(Object-Relational-Mapping).ORM是一种让你

用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传

第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三部分: https://www.cnblogs.com/cgzl/p/8525541.html 第四部分: https://www.cnblogs.com/cgzl/p/8536350.html 这部分就讲从angular5的客户端上传图片到asp.net core 2.0的 web api. 这是