天天看點

10分鐘學會在windows/Linux下設定ASP.Net Core開發環境并部署應用

建立和開發ASP.NET Core應用可以有二種方式:最簡單的方式是通過visual studio 2017 來建立,其優點是簡單友善,但需要安裝最新版本visual studio 2017 preview 15.3 。另一種方式是使用visual studio code來建立,vscode 則是一款輕量級的編輯器 ,可在多種作業系統中運作,如果情況允許,筆者更建議使用visual studio code來進行開發,可在多種平台開發,同時也更靈活,享受更多開發的樂趣

建立和開發ASP.NET Core應用可以有二種方式:最簡單的方式是通過Visual Studio 2017 來建立,其優點是簡單友善,但需要安裝最新版本Visual Studio 2017 preview 15.3 。另一種方式是使用Visual Studio Code來建立,Visual Studio Code 則是一款輕量級的編輯器 ,可在多種作業系統中運作,如果情況允許,筆者更建議使用Visual Studio Code來進行開發,可在多種平台開發,同時也更靈活,享受更多開發的樂趣。
  • 1.1. 先決條件
    • 1.1.1. 安裝.NET Core 2.0
    • 1.1.2. 安裝Visual Studio 2017
    • 1.1.3. 安裝Visual Studio Code
  • 1.2. 通過Visual Studio 2017 建立應用
  • 1.3. 通過Visual Studio Code 建立應用
  • 1.4. 托管ASP.NET Core 應用
    • 1.4.1. Windows平台托管ASP.NET Core應用
    • 1.4.2. Linux平台下托管ASP.NET Core應用
  • 1.5. 總結

開發ASP.NET Core 2.0的應用,前提是需要安裝.NET Core 2.0 正式版。

下載下傳位址https://www.microsoft.com/net/download/core

安裝完成後,可在指令行(cmd)中鍵入指令檢視安裝資訊:

dotnet --info
           

安裝資訊如下圖,表示.NET Core 2.0 已經成功安裝

如果需要使用Visual Studio 2017 來開發,需要安裝 Visual Studio 2017 Preview version 15.3,個人開發者可選擇社群版,社群版的功能對于日常的開發已經足夠,并且是免費。

下載下傳位址 https://www.visualstudio.com/vs/preview/?dotnetid=639356346.1501080398

下載下傳完成後可選擇相應的工作負載來安裝,如果隻是運作ASP.NET Core應用則可以隻安裝響應部分,如下圖所示:

Visual Studio Code 是一個輕量級的源代碼編輯器,可以運作在Windows,MacOs,和Linux。通過安裝擴充可用來開發諸如C++、C#、 Python、PHP、Go等語言。

下載下傳位址(https://code.visualstudio.com/)[https://code.visualstudio.com/]

安裝完成後,需要安裝c#開發擴充如下圖所示

通過Visual Studio 2017 建立應用非常簡單,在建立項目時選擇 ASP.NET Core webapplication即可

在确認選擇後,還會彈出一個對話框,選擇代碼結構模闆,此處任意選擇

Web Application(MVC)

,項目即可生成完畢。在Visual Studio 2017中點選運作,一個ASP.NET Core 網站即可運作。

首先可在本地建立檔案夾,然後打開Visual Studio Code ,選擇打開剛才的檔案夾

在主菜單中依次選擇“檢視” > “內建終端”。在內建終端中輸入

dotnet new mvc

指令,檔案夾中會生成 mvc 的模闆

模闆建立好後,可在內建終端中輸入

dotnet run

指令,mvc 站點即可運作。

要在Visual Studio Code 中調試程式,需要配置調試器,點選調試配置,選擇.NET Core配置檔案

此時會生成launch.json檔案,檔案中有三種launch方式,以web節點為例

{
    "name": ".NET Core Launch (web)",
    "type": "coreclr",
    "request": "launch",
    "preLaunchTask": "build",
    "program": "${workspaceRoot}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
    "args": [],
    "cwd": "${workspaceRoot}",
    "stopAtEntry": false,
    "launchBrowser": {
        "enabled": true,
        "args": "${auto-detect-url}",
        "windows": {
            "command": "cmd.exe",
            "args": "/C start ${auto-detect-url}"
        },
        "osx": {
            "command": "open"
        },
        "linux": {
            "command": "xdg-open"
        }
    }
}

           

将program節點中的路徑改為自己程式集的路徑即可,例如

${workspaceRoot/bin/Debug/netcoreapp2.0/WebApplicationSample1.dll

然後點選左側調試圖示,在左上角可選擇啟動調試,啟動後會彈出,對話框提示找不到build指令,選擇配置任務運作程式。

配置完成後會多一個task.json檔案,此時再次開啟調試,便可運作調試。

托管 ASP.NET Core 應用有多種方式,即可在傳統的windows平台,也可以部署在開源的Linux上,還可以通過docker容器來部署,本節将講解多種方式部署 ASP.NET Core 應用

ASP.NET Core 應用需要一個Host , Host必須要實作

IWebHost

接口,接口包括

Start

方法。建立一個Host 需要使用

WebHostBuilder

,它會傳回一個

WebHost

執行個體,用于處理請求。

在上一節所建立的ASP.NET Core應用中,可以看到Program.cs檔案中的 'void Main'方法,此方法是整個應用的入口,在入口中調用了

CreaDefaultbuilder

來建立Host,代碼如下:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

           

CreateDefaultBuilder

建立了

WebHostBuilder

的執行個體來建構啟動 server 的 host。host需要一個實作

IServer

接口的server。内建的Web server 包括 Kestrel 和 Httpsys,預設使用Kestrel.在指令行工具中執行

dotnet run

指令,此時即可啟動整個應用。

在ASP.NET Core中可以用兩種HTTP server,它們請求原理如圖所示:

Kestrel 是跨平台的HTTP server 基于libuv(一個跨平台的異步I/O library)
Httpsys 是基于Windows核心驅動程式Http.Sys的HTTP server。Http.Sys是成熟的技術,可以防範多種攻擊,并提供全功能Web伺服器的魯棒性,安全性和可擴充性。IIS本身作為HTTP偵聽器運作在Http.Sys之上。

在windows平台上還可以使用Http.Sys作為Web Server

WebHost.CreateDefaultBuilder(args)
							 .UseStartup<Startup>()
							 .UseHttpSys()
							 .Build();

           

由于ASP.NET Core的跨平台性,是以在Liunx環境下也可以使用,需要注意的是在Linux環境下是不能選擇Http.Sys作為Web server,而隻能選擇Kestrel。本文選用 Ubuntu 16.04 系統,作為示例。

第一步:注冊微軟key為可信任

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg

           
注:如果沒有curl需要安裝curl。指令 sudo apt-get install curl

第二步:将微軟的安裝位址設為可信任的清單

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main" > /etc/apt/sources.list.d/dotnetdev.list'

           

第三步:更新

apt-get

版本

sudo apt-get update

           

第四步:更新完成後即可安裝最新.NET Core 2.0

sudo apt-get install dotnet-sdk-2.0.0

           

安裝完成後使用如下指令檢視.NET Core 版本資訊

dotnet --info

           

使用指令生成項目模闆

dotnet new mvc -o app

           

以上指令會在當目錄下面建立一個app文檔夾,首先我們要将根路徑跳轉到app檔案夾下面

cd app

           

最後我們要将ASP.NET Core應用在Linux環境下托管起來,隻需要運作下面一條指令

dotnet run

           

如果選擇Http.Sys作為Linux下的伺服器則會抛出異常

從本節可以看出,不管是在傳統的Windows環境還是Linux環境,都能通過Visual Studio Code開發ASP.NET Core 應用程式,同樣的在Windwos環境和Linux都可以使用ASP.NET Core自帶的Web server來托管應用。

參考資料

【1】http://www.microsoft.com/net/core#linuxubuntu

作者:帥蟲哥 出處: http://www.cnblogs.com/vipyoumay/p/7420436.html

以上内容有任何錯誤或不準确的地方請大家指正,不喜勿噴!

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】,希望能夠持續的為大家帶來好的技術文章!想跟我一起進步麼?那就【關注】我吧。

繼續閱讀