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

来源:http://www.cnblogs.com/vipyoumay/archive/2017/08/24/7420436.html
-Advertisement-
Play Games

創建和開發ASP.NET Core應用可以有二種方式:最簡單的方式是通過visual studio 2017 來創建,其優點是簡單方便,但需要安裝最新版本visual studio 2017 preview 15.3 。另一種方式是使用visual studio code來創建,vscode 則是一... ...


創建和開發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

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

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

安裝完成後,可在命令行(cmd)中鍵入命令查看安裝信息:

dotnet --info

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

2017-08-20-22-07-28

1.1.2. 安裝Visual Studio 2017

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

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

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

安裝Visual Studio

1.1.3. 安裝Visual Studio Code

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

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

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

vscode

1.2. 通過Visual Studio 2017 創建應用

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

create asp.net core webapplication

在確認選擇後,還會彈出一個對話框,選擇代碼結構模板,此處任意選擇Web Application(MVC),項目即可生成完畢。在Visual Studio 2017中點擊運行,一個ASP.NET Core 網站即可運行。

mvcmoive

1.3. 通過Visual Studio Code 創建應用

首先可在本地新建文件夾,然後打開Visual Studio Code ,選擇打開剛纔的文件夾

open vscode

在主菜單中依次選擇“查看” > “集成終端”。在集成終端中輸入 dotnet new mvc 命令,文件夾中會生成 mvc 的模板

2017-08-23-23-13-44

模板建立好後,可在集成終端中輸入dotnet run 命令,mvc 站點即可運行。

2017-08-23-23-14-23

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

configure

此時會生成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命令,選擇配置任務運行程式。

2017-08-23-23-12-20

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

debug

2017-08-23-23-13-01

1.4. 托管ASP.NET Core 應用

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

1.4.1. Windows平臺托管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命令,此時即可啟動整個應用。

run

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

Kestrel

HttpSys

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();

1.4.2. Linux平臺下托管ASP.NET Core應用

由於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

2017-08-20-14-29-41

使用命令生成項目模板


dotnet new mvc -o app

以上命令會在當目錄下麵創建一個app文檔夾,首先我們要將根路徑跳轉到app文件夾下麵


cd app

最後我們要將ASP.NET Core應用在Linux環境下托管起來,只需要運行下麵一條命令


dotnet run

2017-08-20-14-32-52

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

2017-08-23-23-11-01

1.5. 總結

從本節可以看出,不管是在傳統的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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考了兩種方法: 1. 解決fatal: unable to connect to github.com問題 http://blog.csdn.net/greenqingqingws/article/details/11808745原因:需要用https才能讀到數據解決方法:輸入命令git conf ...
  • 有話要說 為什麼要用Linux?要用Linux的原因太多,想說說不完啊。 如果你說用Linux只是為了裝逼,那證明你真的還很菜。不排除有裝逼了因素,那也只占非常少的比例,可以忽略不計。 我們反問一下,為什麼不用Linux呢?回答無非就是:沒有圖像界面、操作太複雜、和我以前的使用習慣不一樣、學習新的系 ...
  • 添加PPA: 1、首先進入ubuntu系統,system—>administration—>update manager—>setting,在軟體源界面,點擊other software 標簽頁,點擊左下角的add,將獲得的PPA地址粘貼進來。 2、也可以在終端輸入,sudo gedit /etc/ ...
  • 本節課程,需要完成擴增子分析解讀1質控 實驗設計 雙端序列合併 先看一下擴增子分析的整體流程,從下向上逐層分析 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們拿到了雙端數據,進行了質控、並對實驗設計進行了填寫和檢查、最後將雙端數據合併為單個文件進行下游分析。 接下來 ...
  • 對值類型和引用類型的誤解 (引用類型存儲在堆上,值類型存儲在棧上) 對值類型和引用類型的誤解 (引用類型存儲在堆上,值類型存儲在棧上) 在學習C#基礎篇幅的時候總是逃不掉值類型和引用類型,很多新手包括我以前對它的理解也只是停留在"引用類型存儲在堆上,值類型存儲在棧上". 這個誤區主要歸咎於我們根本沒 ...
  • 第 9 章:常用的設計模式 9.1 聚合組件 考慮為常用的特性域提供聚合組件。 要用聚合組件來對高層的概念(物理對象)進行建模,而不是對系統級的任務進行建模。 要讓聚合組件的名字與眾所周知的系統實體相對應,比如 MessageQueue、Process 或 EventLog,這樣就能使類型更加引人註 ...
  • 為什麼有這種需求, 原因是這樣的, 公司有一個Java的web項目,在另一臺伺服器A上,最近老闆一時興起,想把他合併到這台穩定點的伺服器B上,伺服器B上使用IIS來寄宿asp.net 網站, 怎麼辦呢,硬著頭皮上吧,在網上找各種解決方案: 解決方案一:isapi_redirect 這個方法按照方法試 ...
  • 在網路編程過程中需要向伺服器上傳文件。 Multipart/form-data是上傳文件的一種方式。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...