日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Docker容器环境下ASP.NET Core Web API应用程序的调试

發(fā)布時間:2023/12/4 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker容器环境下ASP.NET Core Web API应用程序的调试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文主要介紹通過Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器環(huán)境下,對ASP.NET Core Web API應(yīng)用程序進行調(diào)試。在自己做實驗的過程中也碰到了一些問題,經(jīng)過一些測試和搜索資料,基本解決了這些問題,本文也會對這些問題進行介紹,以免有相同需求的朋友多走彎路。

插件的下載與安裝

至撰寫本文為止,Visual Studio 2015 Tools for Docker插件還是處于Preview的版本(版本號:0.31.0),可以點擊此處下載。要正確安裝此插件并能夠成功地在Visual Studio 2015中使用該插件進行調(diào)試,需要滿足以下先決條件:

  • Microsoft Visual Studio 2015 Update 3

    • Enterprise

    • Professional

    • Community

  • Microsoft .NET Core 1.0 SDK for Windows以及VS 2015 Tooling Preview 2

  • Windows系統(tǒng)已經(jīng)安裝Docker for Windows或者Docker Toolbox

本文將以VS 2015 Enterprise + Windows 10 + Docker for Windows作為開發(fā)環(huán)境進行介紹。

下載插件后,即可按照正常的軟件安裝過程進行安裝。安裝過程請退出Visual Studio 2015。安裝成功后,可以在Visual Studio的“擴展與更新”中找到Visual Studio 2015 Tools for Docker – Preview:

在ASP.NET Core Web API項目上啟用Docker的支持

打開我們的DockerWebAPI項目,在項目上單擊鼠標右鍵,然后選擇“添加 –>? Docker Support” 菜單:

經(jīng)過一段時間,VS Tools for Docker就會在項目上添加一些文件:

我們暫時先不詳細介紹這些文件的具體內(nèi)容和作用。基本上在Properties目錄下是給Visual Studio 2015和編譯環(huán)境所使用的;而docker-compose以及Dockerfile都是給Docker所使用的,需要了解詳細信息的朋友,可以先上網(wǎng)搜索了解一下。

開始調(diào)試ASP.NET Core Web API應(yīng)用程序

在開始調(diào)試以前,請首先打開Docker for Windows的設(shè)置,在Shared Drivers里,把項目所在的驅(qū)動器勾選上。如果這步?jīng)]有做,那么就無法成功啟動調(diào)試器。

接下來,直接按下F5快捷鍵,就可以開始調(diào)試了。當然,也可以按下工具欄上的“啟動”按鈕來啟動調(diào)試,可以看到,我們的調(diào)試按鈕已經(jīng)默認設(shè)置為Docker了:

Visual Studio 2015啟動Debugger的過程大致如下:

  • 調(diào)用PowerShell腳本DockerTask.ps1,對環(huán)境進行清理,比如停止正在運行的容器,以及將已有的Docker Image刪除

  • Visual Studio對項目進行編譯

  • 調(diào)用PowerShell腳本DockerTask.ps1,將項目發(fā)布到bin/Docker/Debug/app目錄

  • 開始根據(jù)docker-compose.debug.yml的文件內(nèi)容,生成Docker Image

  • 啟動Visual Studio Debugger,通過不斷地ping http://localhost/api/values 端點,確保Docker Container已經(jīng)成功加載

  • 打開默認瀏覽器,開始調(diào)試,等待斷點命中

需要注意的是,VS Tools for Docker默認使用80端口,如果系統(tǒng)中已經(jīng)安裝有使用80端口的服務(wù),比如IIS,請要么停止占用80端口的服務(wù),要么修改項目中的yml文件,選擇使用其它的端口。否則編譯過程將無法完成。另一個需要注意的地方是,由于在上一次的案例中,我們通過UseUrls API指定了我們的應(yīng)用程序可以接受來自任何地址的5000端口的請求,因此,我們也需要相應(yīng)地修改docker-compose.debug.yml文件,使其能夠?qū)⒅鳈C的80端口映射到5000端口,如下:

成功啟動調(diào)試器之后,即可設(shè)置斷點,待斷點命中時,可以像調(diào)試普通C#應(yīng)用程序那樣,使用Visual Studio提供的各種調(diào)試體驗。從下圖可以看出,我們的調(diào)試上下文已經(jīng)是在Docker容器中了(Environment.MachineName返回了Docker Container的ID):

有關(guān)自動生成的Docker Image

在Visual Studio Tools for Docker完成項目的編譯之后,會生成一個名稱為“username/xxxx: Debug”的Docker Image(xxxx為項目名稱):

既然是一個Docker Image,那么我們應(yīng)該可以使用docker run命令,在容器中執(zhí)行這個Docker Image。現(xiàn)在我們來嘗試一下:

發(fā)現(xiàn)并沒有執(zhí)行成功,提示了一個bash的錯誤:integer expression expected。此時也無法從瀏覽器訪問這個應(yīng)用程序。經(jīng)過一段時間的研究,發(fā)現(xiàn)在Dockerfile.debug文件的最后一條ENTRYPOINT指令處,將:

?

1 ENTRYPOINT [ "/bin/bash" , "-c" , "if [ \"$REMOTE_DEBUGGING\" -eq 0 ]; then dotnet DockerWebAPI.dll; else sleep infinity; fi" ]

改為:

?

1 ENTRYPOINT [ "/bin/bash" , "-c" , "if [[ \"$REMOTE_DEBUGGING\" -eq 0 ]]; then dotnet DockerWebAPI.dll; else sleep infinity; fi" ]

(if后面的子句使用兩個雙括號)。

此時再次編譯運行,調(diào)試過程也不會有什么問題,再次通過命令行執(zhí)行新生成的Docker Image,可以看到,這個錯誤已經(jīng)修復(fù):

其實這只是我在使用VS Tools for Docker的一個小發(fā)現(xiàn),并沒有太大的實際意義:

  • 在Debug模式,如果不修復(fù)這個問題,Debugger照樣可以啟動

  • 在Release模式,Dockerfile根本就沒有這條指令(因為Release模式下只需要正常啟動應(yīng)用程序就可以了)

反正在此也把這個心得分享出來,或許也能幫到有著同樣疑惑的朋友。

總結(jié)

本文對Visual Studio Tools for Docker進行了簡單的介紹。在后續(xù)的文章中,我還會繼續(xù)介紹一些Docker的使用心得,并同時介紹一些ASP.NET Core Web API的開發(fā)經(jīng)驗。


原文地址:http://www.cnblogs.com/daxnet/p/5793479.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注


贊賞

人贊賞

總結(jié)

以上是生活随笔為你收集整理的Docker容器环境下ASP.NET Core Web API应用程序的调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。