1. 程式人生 > >03、手工創建Asp.Net Core 2.0 web應用程序(探索最小架構)

03、手工創建Asp.Net Core 2.0 web應用程序(探索最小架構)

log bho 啟動 oid img gif method nuget ica

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);
            });
        }
    }
}
View Code 效果如下: 技術分享 至此,我們使用Asp.Net Core 2.0創建了一個最小架構的Web應用程序。

8.查看一下編譯後的文件 技術分享

我們並沒有看到我們使用Nuget應用的兩個包,這也說明.NetCore2.0做了運行時包倉優化。參考:02、NetCore2.0--引用系統和第三方包時的優化

03、手工創建Asp.Net Core 2.0 web應用程序(探索最小架構)