サンドボックス ソリューションのイベント レシーバーを置き換える

SharePoint アドイン モデルでは、SharePoint でイベントを処理する方法が、完全信頼コードを使用していた方法やコード化されたサンドボックス ソリューションでの方法と若干異なります。 一般に、これまでのソリューションでは、イベント レシーバーは SharePoint サーバー側オブジェクト モデルを使用して作成され、ソリューション パッケージによって展開されていました。このイベント レシーバーは、SharePoint サーバー上でコードを実行します。

その一方で、SharePoint アドイン モデルでは、イベント レシーバーの実装がイベント レシーバーをホストしている Web サーバー上で実行されます。このようなイベント レシーバーは、リモート イベント レシーバー (RER) と呼ばれます。 多くの場合、イベント レシーバーはリモート イベント レシーバーの実装に置き換えることができます。

この記事では、さまざまなオプションと設計に関する考慮事項について説明します。

注:

コードベースのサンドボックス ソリューションは、2014 年以降、非推奨となっています。また、SharePoint Online では、この機能を完全に削除するためのプロセスが始まっています。 コードベースのサンドボックス ソリューションは、SharePoint 2013 および SharePoint 2016 でも非推奨になっています。

イベント レシーバーを置き換える場合のオプション

方法 設計に関する考慮事項と詳細
リモート イベント レシーバー
  • ホスティング インフラストラクチャが必要になります。
  • ホスティング インフラストラクチャは高可用性を備えている必要があります。
  • リモート イベント レシーバーをホストするサービス エンドポイントは、匿名認証に対応するように構成されている必要があります。
  • SharePoint Online を使用している場合は、信頼されたサード パーティ証明書が必要になります。
  • 長時間実行される操作には適していません。
  • アドインのコンテキスト外部でアタッチされたリモート イベント レシーバー (コンソール アプリケーションまたは PowerShell を使用してアタッチされたもの) は、起動時に SharePoint コンテキスト トークンを受け取らなくなります。したがって、アドイン専用のアクセス許可に従うか、SharePointOnlineCredentials クラスを使用する必要があります。
  • 再試行のメカニズムはありません。
Webhook
  • ホスティング インフラストラクチャが必要になります。
  • ホスティング インフラストラクチャは高可用性を備えている必要があります。
  • 同期イベントをサポートしていません。
  • イベントが発生した後で変更を処理します。
  • 現時点では、オンプレミスの SharePoint のビルドでは使用できません。
変更を監視するためのリモート タイマー ジョブ
  • ChangeQuery オブジェクトを使用して、サイトまたはリストでの変更を監視します。 このパターンは、リモート イベント レシーバーの代替手段になります。
  • ホスティング インフラストラクチャが必要になります。
  • イベントが発生した後で変更を処理します。
  • 変更の処理にポーリング メカニズムを使用します。

サイトからサンドボックス コードを削除する

既存のサンドボックス ソリューションをサイトから非アクティブにしても、宣言オプションを使って展開されたアセットやファイルはいずれも削除されません。 ただし、サンドボックス ソリューションの機能が自動的に非アクティブ化されて、イベント レシーバーが削除されます。

関連項目