_posts/2017-03-13-webjobs-remote-debug.html (205 lines of code) (raw):
---
title: "Azure WebJobs をリモート デバッグする方法について"
author_name: "Japan Azure CIE Support Team"
tags:
- MigratedArticle
- App Service
- Web Apps
- WebJobs
---
<!-- article summary -->
<small><span style="font-style: italic">
この記事は <a href="https://docs.microsoft.com/ja-jp/archive/blogs/jpcie/azure-webjobs-をリモート-デバッグする方法について">旧 Japan Azure PaaS Support Blog</a> からのコピーとなります。<br />
記載されている内容は 2017 年 3 月 13 日 時点のものとなり、現時点におきましては変更されている可能性がありますので、ご注意下さい。
</span></small><hr />
<main class="content" data-bi-name="content" dir="ltr" id="main" lang="en-us" role="main">
<!-- <content> -->
<p>
こんにちは。日本マイクロソフト Azure CIE サポートです。
</p>
<p>
今回は、Visual Studio を使用して Azure 上で動作している WebJobs をデバッグする方法についてご案内します。
</p>
<p>
</p>
<p>
<strong>
事前準備
</strong>
</p>
<p>
WebJobs をホストしている App Service の設定で、リモート デバッグが有効化されている必要があります。
</p>
<p>
Azure ポータルから対象の App Service を開き、[アプリケーション設定] の設定項目の中から [リモート デバッグ] を “オン” に設定し、使用する Visual Studio のバージョンを選択して、設定を [保存] してください。
</p>
<p>
<img alt="553830d7-014e-4b1c-8d24-5ac31e782856" data-linktype="external" src="/blog/media/2017/03/553830D7-014E-4B1C-8D24-5AC31E782856.jpg"/>
</p>
<p>
</p>
<p>
</p>
<p>
<strong>
方法 1 : サーバー エクスプローラーからデバッガーをアタッチする方法
</strong>
</p>
<p>
本方法では、対象の WebJobs をホストしている App Service のサブスクリプションにおける管理者、共同管理者などの高い権限が必要となりますが、Visual Studio の画面上からの簡単な操作のみで WebJobs のデバッグを行っていただくことができます。以下に、手順をご案内します。
</p>
<p>
</p>
<ol>
<li>
Visual Studio 上でサーバー エクスプローラーのウィンドウを表示します。サーバー エクスプローラーが非表示になっている場合は、[Ctrl+Alt+S] キーを押下するなどして表示します。
</li>
</ol>
<p>
</p>
<ol start="2">
<li>
対象の Azure サブスクリプション配下のツリーを展開し、デバッグ対象の WebJobs を表示して選択します。
</li>
</ol>
<p>
</p>
<ol start="3">
<li>
右クリック メニューから、[デバッガーのアタッチ] を実行して、Visual Studio を WebJobs にアタッチします。
</li>
</ol>
<p>
アタッチに成功したらデバッグ作業を行います。
</p>
<p>
<img alt="173acd40-b2db-4002-ab67-49abf285d1c3" data-linktype="external" src="/blog/media/2017/03/173ACD40-B2DB-4002-AB67-49ABF285D1C31.jpg"/>
</p>
<p>
</p>
<ol start="4">
<li>
デバッグを終了するには、[デバッグ] メニューから [すべてデタッチ] を選択してプロセスからデバッガーをデタッチします。
</li>
</ol>
<p>
</p>
<p>
</p>
<p>
<strong>
方法 2 : [プロセスにアタッチ] メニューからデバッガーをアタッチする方法
</strong>
</p>
<p>
本方法は、方法 1 とは異なり、発行プロファイルで設定されたユーザー名とパスワードが与えられればデバッグ作業を行うことが可能です。
</p>
<p>
なお、WebJobs は通常、Kudu と呼ばれる独立した SCM サイト上で動作していますが、本方法をご利用いただくには、予め設定を変更して、SCM サイトも App Service と同一のプロセス上で動作するよう変更されている必要があります。
</p>
<p>
</p>
<p>
※ 本設定を適用すると、現在実行中の WebJobs は再起動されますので、事前に本設定を適用していた場合を除き、運用中に発生した問題のトラブルシュートに本方法をご利用いただくことはできません。また、App Service が停止している場合は SCM の機能を使用することができなくなるため、App Service が停止している間は Git や MSDeploy を使用した管理やデプロイ作業を行うことはできなくなる点にご注意ください。
</p>
<p>
</p>
<p>
以下に、手順をご案内します。
</p>
<p>
</p>
<ol>
<li>
Azure ポータルから対象の App Service を開き、[アプリケーション設定] の [アプリ設定] に、以下の定義を追加して [保存] します。
</li>
</ol>
<p>
</p>
<p>
キー : WEBSITE_DISABLE_SCM_SEPARATION
</p>
<p>
値 : true
</p>
<p>
<img alt="36694b99-78d0-4960-8461-dd21b880cacd" data-linktype="external" src="/blog/media/2017/03/36694B99-78D0-4960-8461-DD21B880CACD.jpg"/>
</p>
<p>
</p>
<p>
これにより、SCM が独立したプロセスではなく App Service と同一のプロセス上で動作するようになります。
</p>
<p>
本設定を元に戻すには WEBSITE_DISABLE_SCM_SEPARATION を削除するか、キーの値を false に設定します。
</p>
<p>
</p>
<ol start="2">
<li>
App Service の [概要] メニューから [発行プロファイル取得] を選択するなどして発行プロファイルのユーザー名とパスワードを取得します。
</li>
</ol>
<p>
<img alt="d5569aae-6340-4a5b-88cd-e11e660de2f7" data-linktype="external" src="/blog/media/2017/03/D5569AAE-6340-4A5B-88CD-E11E660DE2F7.jpg"/>
</p>
<p>
</p>
<ol start="3">
<li>
Visual Studio の [デバッグ] メニューから、[プロセスにアタッチ] を選択します。
</li>
</ol>
<p>
<img alt="07f9f127-ba52-44ff-9169-624584fcc01d" data-linktype="external" src="/blog/media/2017/03/07F9F127-BA52-44FF-9169-624584FCC01D.jpg"/>
</p>
<p>
</p>
<ol start="4">
<li>
[修飾子] の欄に対象の App Service のホスト名とポート番号 4020 を指定します。ホスト名とポート番号の間はコロン “:” で区切ります。
</li>
</ol>
<p>
<img alt="d579bfbb-d938-46b6-9800-7194ec7b8be4" data-linktype="external" src="/blog/media/2017/03/D579BFBB-D938-46B6-9800-7194EC7B8BE41.jpg"/>
</p>
<p>
</p>
<ol start="5">
<li>
認証ダイアログが表示されたら、手順 2. で確認したユーザー名とパスワードを入力します。
</li>
</ol>
<p>
ユーザー名には “ドメイン名\$ユーザー名” の形式で設定されているものを使用します。
</p>
<p>
</p>
<ol start="6">
<li>
認証に成功すると [選択可能なプロセス] の一覧が表示されるので、対象の WebJobs プロセスを選択して [アタッチ] を実行します。
</li>
</ol>
<p>
アタッチに成功したらデバッグ作業を行います。
</p>
<p>
</p>
<ol start="7">
<li>
デバッグを終了するには、[デバッグ] メニューから [すべてデタッチ] を選択してプロセスからデバッガーをデタッチします。
</li>
</ol>
<p>
</p>
<p>
</p>
<p>
ローカル環境ではデバッグ作業を行うことが難しい場合などに、上記の方法がお役に立てましたら幸いです。
</p>
<p>
</p>
<p>
</p>
<p>
本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。
</p>
<!-- </content> -->
</main>