Azure Web Appで走るASP.NET Core 2.1アプリをリモートデバッグしてみる
結論としては以下のページを見ればなんとかなる
Remote debug your Azure App Service 2017 including ASP.NET Core
Remote debug your Azure App Service Web App
64 bit ASP.NET Core on Azure App Service
ASP.NET Core 2.1なアプリをAny CPUでビルドしてリリースして動かせるところまではやった前提で。
リモートデバッグうまくいかなかった経緯とその原因
Azureポータルで、Web Appのアプリケーション設定でリモートデバッグをオンにする。
https://gyazo.com/861ed2315f4c78fe6e4896c2f73e26a1
んで、デバッグでコンパイルしたASP.NET Coreアプリをリリースしてから、Visual Stuido 2017のCould Explorerでデバッガ―のアタッチをする。
https://gyazo.com/86518b451ff9853e4acf6a377574a3ae
が、しかし。
https://gyazo.com/ad2c2fc65ee6b0ed267ba8eb3e02d368
なんでやねんと思って、手動でアタッチしようとした。
ポータルから発行プロファイルをダウンロードして
https://gyazo.com/fadcf4c67c5e25d73c301614fb70ec98
発行ファイルの中にあるユーザ名とパスワードを使ってサイトのアドレス(<Web Appのアプリ名>.azurewebsites.net)にアタッチ。
https://gyazo.com/3efa6e0627b1bc2da1cc163b4fe0c2bb
ほんとだdotnet.exeがx86だ……
調べると、64 bit ASP.NET Core on Azure App Serviceに書いてある通り、今のASP.NET CoreのWeb Appはデフォルトでは32bit版しかインストールされてない模様。
Kuduで確認すると、環境変数のPathは32bitのしかないし実際Program Files見ても32bitのしかなかった。
https://gyazo.com/bde510fc34b0e571fa0f912641c23383
リモートデバッグ成功までやってみた
64 bit ASP.NET Core on Azure App Serviceを見て、手動で64bitのdotnet.exeを入れて、動かせばいいということが分かったのでやってみる。
https://www.microsoft.com/net/download/windows からASP.NET Core 2.1のx64RuntimeのBinariesとなるzipファイルをダウンロード。
KuduからWeb Appのサーバにzipファイルをアップロードして解凍。今回はD:\home\dotnetに展開。
https://gyazo.com/2bb7177e816ccd520082dae469f21616
ASP.NET Core 2.1アプリのWeb.configを修正。dotnet.exeが上記で展開したx64版のものになるように指定する。
https://gyazo.com/81edcac6c6e27d6f6271aec14d748e30
通常の手段で発行すると、processPathがdotnetにさし変わるので(これの理由と対処法が全く分からない)ソリューションエクスプローラーから直接発行。
https://gyazo.com/3494243b057caff6e09985cc768ac94c
すると、dotnet.exeが64bitで起動して
https://gyazo.com/757c7af94ba41af79ab7c4cbf2beaae8
アタッチ出来てブレイク張れてデバッグできるようになります。
(ここまでくるとCould Explorerでデバッガ―のアタッチがいける)
https://gyazo.com/3c5b585004170801ae4fcbb0c8bd897f
ステップ実行が凄く遅かったりするけど、目標としたリモートデバッグは完了!
なお(補足)
64 bit ASP.NET Core on Azure App Service
にあるように、dotnet.exeが今は32bitしかインストールされてないけど、2.1の間に両方入るようにするらしい。
フィードバックにも同じようなのがあって、みんなまだなのって言ってる。
https://feedback.azure.com/forums/169385-web-apps-formerly-websites/suggestions/16049980-install-64-bit-dotnet-exe-runtime
最初から64bitのバイナリが入っていれば、何の問題もなくリモートデバッグが動くようになりますが、いつになるやら……