ASP.NET Core 1.0 Hello World

ASP.NET 5 改名為 ASP.NET Core 1 後,下一個 RC 版本 (RC2) 將會改成與 .NET Core 1 的 CLI (dotnet) 合併在一起使用,本文即是使用 dotnet CLI 的 Hello World 初體驗教學。

ASP.NET Core 1 在與 .NET Core 1 合併後,會共用 .NET Core CLI 工具作為專案的編譯與建造之用,這個版本將會在 RC2 開始問世,不過在 RC2 完成前,ASP.NET Core 的開發團隊釋出了一個體驗的版本,放在 ASP.NET Core 的 GitHub,不過我用 Visual Studio Code 加上新的 .NET Core CLI (v1.0.001517),就可以成功編譯 ASP.NET Core 的應用程式了。

本次體驗在 Windows 10 (v10.0.10586) 作業系統下操作。

操作步驟如下:

1. 到 .NET Core CLI 的網站下載最新版的 .NET Core CLI,版本 v1.0.001517,網址為:http://dotnet.github.io/getting-started/ ,下載 dotnet-win-x64.latest.exe,它會啟動 .NET Core CLI 的 Installer 進行安裝。將它安裝完,然後啟動命令提示字元,並試著執行 dotnet,確認它可以執行。

2. 在磁碟中建立一個目錄 (本例為 D:\aspnet-dotnet-cli),然後用 Visual Studio Code 開啟這個目錄,並新增四個檔案,分別是 project.json、Program.cs、Startup.cs 以及 NuGet.config,檔案內容分別是:

// project.json
{
    "compilationOptions": {
        "emitEntryPoint": true
    },
    "dependencies" : {
        "NETStandard.Library": "1.0.0-*",
        "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-*",
        "Microsoft.AspNetCore.HttpOverrides": "1.0.0-*",
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*"
    },
    "frameworks": {
        "dnxcore50": { }
    }
}
// Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpOverrides;

namespace HelloWeb
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseIISPlatformHandler();
            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.All
            });
            
            app.Run(context =>
            {
                return context.Response.WriteAsync("Hello World!");
            });
        }
    }
}
// Program.cs

using System.IO;
using Microsoft.AspNetCore.Hosting;

namespace HelloWeb
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                        .UseServer("Microsoft.AspNetCore.Server.Kestrel")
                        .UseApplicationBasePath(Directory.GetCurrentDirectory())
                        .UseDefaultConfiguration(args)
                        .UseIISPlatformHandlerUrl()
                        .UseStartup<Startup>()
                        .Build();

            host.Run();
        }
    }
}
<!-- NuGet.config -->

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="AspNetCI" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
    <add key="dotnet-core" value="https://www.myget.org/F/dotnet-core/api/v3/index.json" />
    <add key="dotnet-cli" value="https://www.myget.org/F/dotnet-cli/api/v3/index.json" />
  </packageSources>
</configuration>

尤其是 NuGet.config,如果沒有這個檔案,稍後的還原會出現錯誤。

3. 在命令提示字元中,切換至方才新增的位置 (本例為 D:\aspnet-dotnet-cli),執行 dotnet restore,.NET Core CLI 會開始下載必要的 Framework Packages,這需要幾分鐘時間執行。

4. 執行 dotnet run,啟動程式。

5. 開啟瀏覽器並瀏覽 http://localhost:5000,就可以看到 Hello World 的訊息,表示程式已經成功執行。

你也可以試著把 ASP.NET Core 團隊提供的 CLI samples 內的其他專案依相似方法操作,應該也可以成功執行,或是依照 https://github.com/aspnet/cli-samples/blob/master/README.md 的說明也可以喔。