SharePoint アドインでのリモート イベント レシーバーのデバッグとトラブルシューティング
リモート SharePoint テスト サイトのデバッグを構成する
注意
このセクションに記されている手順は、SharePoint テスト サイトが Visual Studio とは別のコンピューター上にある場合か、テスト サイトとして SharePoint Online 開発者向けサイトを使用している場合にのみ該当します。SharePoint と Visual Studio が同じコンピューター上にある場合には、このセクションはスキップしてください。
Visual Studio の SharePoint アドイン プロジェクトにリモート イベント レシーバー (RER) またはアドイン イベント レシーバーが含まれる場合、(F5) を使ってアドインをデバッグする前に、プロジェクトのプロパティで追加の簡単な構成を行う必要があります。さらに、Azure の構成も行う必要があります。RER またはアドイン イベントのあるすべてのプロジェクトで Azure 構成を繰り返す必要はありません。(アドインに AppInstalled イベント ハンドラーが含まれている場合は、このセクションの構成を実行しない限り、F5 または Ctrl + F5 [デバッグなしで実行する] キーを押してもアドインは実行されません。)
Azure を構成するには
まだお持ちでない場合は、Microsoft Azure サブスクリプションを取得します。1 つは MSDN サブスクリプション の特典として含まれています。
「サービス バス名前空間を作成する」の手順を実行します。
Visual Studio で SharePoint アドイン プロジェクトを構成するには
最新バージョンの Office Developer Tools for Visual Studio が必要です。そのため、ここで WebPI インストーラーを実行するか、Office Developer Tools for Visual Studio 2015 用のインストーラーを実行します。
Visual Studio の SharePoint アドイン プロジェクトに RER またはアドイン イベント ハンドラーを追加したら、ソリューション エクスプローラー でそのプロジェクトを右クリックし、[プロパティ] を選択します。
プロパティのウィンドウで [SharePoint] タブを開き、一番下までスクロールします。
-
**[Microsoft Azure サービス バスによるデバッグを有効にする]** のチェック ボックスをオンにします。
表示されたテキスト ボックスに完全な接続文字列を入力します。文字列は次の手順を使用して取得します。
Azure ポータルにサインインして、[サービス バス] タブを開きます。
RER のデバッグ用に作成した名前空間を開き、接続文字列に移動します。Azure portal UI は頻繁に変更されます。接続文字列が見つからない場合は、「Azure portal のヘルプ」を参照してください。
[SAS] 接続文字列をコピーします。この文字列を Visual Studio プロジェクトのプロパティに入力します。
Azure ポータルを毎回開く必要をなくすため、Visual Studio で SharePoint アドイン を作成するときにはこの情報が事前に取り込まれるようになる予定です。
構成をテストする
RER をデバッグ可能なことを確認するには、このセクションの手順を使用します。
リモート イベント レシーバー プロジェクトを作成するには
Visual Studio でプロバイダー ホスト型 SharePoint アドインを作成します。「プロバイダー ホスト型 SharePoint アドインの作成を始める」を参照してください。
ソリューション エクスプローラー で、アドイン プロジェクトのノードを選択します。
メニュー バーで、[プロジェクト] > [新しい項目の追加] の順に選択します。
[テンプレート] ウィンドウで、[リスト] テンプレートを選択し、次に [追加] を選択します。
[完了] を選択して既定のカスタム リストをアドイン プロジェクトに追加します。
[テンプレート] ウィンドウの [リモート イベント レシーバー] テンプレートを選択して、アドイン プロジェクトに別の項目を追加します。
[名前] ボックスは既定の名前 (RemoteEventReceiver1) のままにし、[追加] を選択します。
[使用するイベント レシーバーの種類] ボックスの一覧で、[リスト項目イベント] を選択します。 イベント ソースは、前の手順で追加したリストである [List1] のままとします。
[次のイベントを処理] リストで、[項目が追加されています] を選択し、[完了] を選択します。
指定したリモート イベントを処理する Web サービスが Web アプリケーションに追加されます。SharePoint アドインにリモート イベント レシーバーが追加されます。レシーバーは、Web サービスと、イベント レシーバーの Elements.xml ファイルのリスト項目イベントを参照します。
アドイン プロジェクトで、AppManifest.xml を開きます。
開始ページをリストのページ AddInProjectName/Lists/List1 に変更します。
AddInProjectName を、アドイン プロジェクトの名前 (
SharePointAddIn4/Lists/List1
など) に置き換えます。この例では、スタート ページをリストのページに設定します。ただし、標準的なアドインでは、Web プロジェクト ページの独自の UI を指定します。
イベント ハンドラーのデバッグを実行してテストするには
まだ行っていない場合は、前述の「Visual Studio で SharePoint アドイン プロジェクトを構成するには」の手順を実行します。
Web プロジェクトで、リモート イベント レシーバー サービス (RemoteEventReceiver1.svc) を開き、
ProcessEvent()
メソッド内の任意のコード行にブレークポイントを追加します。F5 キーを選択してプロジェクトを実行します。
[+ 新しい項目] ボタンを選択して項目をリストに追加します。
項目のタイトルを指定し、[保存] を選択します。 リモート イベント レシーバーに追加したブレークポイントで停止したら、リモート イベント レシーバーのデバッグ中であることを確認します。
F5 キーを選択してプロジェクトの実行を継続し、終了したらデバッグを停止します。
イベント デバッグを構成する必要性を知らせる Visual Studio からの通知をオン/オフにする
プロジェクトにリモート イベントがあり、リモート イベント デバッグを設定していない場合は、Visual Studio からリモート イベント デバッグの設定を求めるメッセージが表示されます (次の図を参照)。この動作は、[SharePoint] タブの [リモート イベント デバッグが構成されていない場合は通知する] チェック ボックスをオフにすることで変更できます。
リモート イベント デバッグ通知
サービスがサービス バスでホストされていることを確認します。
F5 キーを選択してアドインを信頼した後、ブラウザーでサービス バス名前空間 (http://mynamespace.servicebus.windows.net
など) に移動すると、ご使用のエンドポイントが数字として一覧表示されるはずです。次の図は、名前空間が一覧表示 されていない 場合、つまり F5 を選択する前のページの状態を示しています。
サービス バス名前空間の参照
RER でブレークポイントがヒットしない
イベントによっては、リモート イベントが同期または非同期の可能性があります。非同期の場合、ブレークポイントにヒットするまで数秒以上かかることがあります。
エラー: 「リッスンしているエンドポイントがありませんでした」
ハンドラーが運用環境で動作しているときに、次のエラーが表示されます。
"リモート イベント レシーバーの呼び出しに失敗しました。詳細: メッセージを受信できる https://{domain}:nnnnn/{path}/AppEventReceiver.svc
でリッスンしているエンドポイントがありませんでした。これは一般に、アドレスまたは SOAP アクションが正しくない場合に発生します。" (ここで、nnnnn はポートです。)
SharePoint では、稼働中のハンドラーの URL にポートが明示的に指定されていないことが必要です。つまり、HTTPS の場合はポート 443 (推奨)、HTTP の場合は ポート 80 を使用する必要があります。
エラー: 「機関との SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした」
ハンドラーが運用環境で動作しているときに、次のエラーが表示されます。
"リモート イベント レシーバーの呼び出しに失敗しました。詳細: 機関との SSL/TLS セキュリティ保護チャネルに対する信頼関係を確立できませんでした"
アドインが SharePoint Online 内にあるものの、リモート イベント レシーバー サービスはオンプレミスであり、推奨されているとおりに HTTPS を使用している場合、レシーバーをホストするサーバーは、運用環境では自己署名証明書を使用できません。サーバーには、証明機関からの一般に承認されている証明書が必要です。アドインがオンプレミスの SharePoint ファーム内にある場合は、自己署名証明書を使用できます。