Azure Web Appで走るASP.NET Core 2.1アプリをリモートデバッグしてみる
結論としては以下のページを見ればなんとかなる
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だ……
Kuduで確認すると、環境変数のPathは32bitのしかないし実際Program Files見ても32bitのしかなかった。
https://gyazo.com/bde510fc34b0e571fa0f912641c23383
リモートデバッグ成功までやってみた
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
ステップ実行が凄く遅かったりするけど、目標としたリモートデバッグは完了!
なお(補足)
にあるように、dotnet.exeが今は32bitしかインストールされてないけど、2.1の間に両方入るようにするらしい。
フィードバックにも同じようなのがあって、みんなまだなのって言ってる。
最初から64bitのバイナリが入っていれば、何の問題もなくリモートデバッグが動くようになりますが、いつになるやら……