.NET 更新後に Azure で実行されている SharePoint プロバイダーホスト型アドインが動作を停止する

この記事は、SharePoint 開発者サポート チームのエンジニアである Westley Hall からの投稿に基づいています。

現象

アドインが動作を停止する条件は次のとおりです。

  • Azure Web サービスで実行されている SharePoint プロバイダーホスト型アドインがあります。
  • アドインは、アプリ パーツ (またはクライアント Web パーツまたはアドイン) または iframe 内にある SharePoint ページでホストされます。

原因

この問題は、既定の SameSite Cookie プロパティの変更が原因である可能性があります。

最近の.NET Framework更新ロールアウトでは、ASP.NET_SessionId Cookie の既定の SameSite プロパティ値が Lax にリセットされます。 この変更により、iframe のドメインがホスト ページのドメインと異なる場合、Cookie が iframe に送信されなくなります。 SharePoint プロバイダーホスト型 Web パーツ アドインでは、iframe は常に別のドメインに存在します。

たとえば、セッション Cookie は次のようになります。

Set-Cookie: ASP.NET_SessionId=<xxxxxxxx>; path=/; HttpOnly; SameSite=Lax

注:

この例では、 <xxxxxxx> はセッションのランダム識別子です。

このセッションは通常、認証を維持するために ASP.NET アプリケーションで使用されます。 ページは、同じアプリへの投稿または AJAX 呼び出しがある場合、セッションを使用するのではなく、2 回目の試行で認証にリダイレクトしようとします。

場合によっては、ディレクトリ サービスで "405 メソッドが許可されていません" エラーが生成されることがあります。 これは、AJAX 呼び出しによって CORS OPTIONS 要求がトリガーされる可能性があり、SharePoint がそのような要求を拒否するためです。

解決方法

この問題を解決するには、system.web セクションで次のように 、web.config ファイルの既定値を設定します。

<system.web>
    <httpCookies sameSite="None" requireSSL="true"/>
    <sessionState cookieSameSite="None" />

注:

SameSite[なし] に設定されている場合、SharePoint は iframe とホストの要件を同じドメイン内に強制しません。

Azure Web アプリのライブ インスタンスで Web.config ファイルを更新するには、次の手順に従います。

  1. Azure portalで Web アプリケーション設定に移動します。

  2. [ 高度なツール] を選択し、[ 移動] を選択します。

    [高度なツール] オプションを示すスクリーンショット。

  3. Kudu 画面で、[ デバッグ コンソール] を選択し、[CMD] を選択 します

    [デバッグ コンソール] で [CMD] を選択する方法を示すスクリーンショット。

    デバッグ コンソールの CMD を示すスクリーンショット。

  4. [ファイル ビュー] 画面で、CD site\wwwroot コマンド (次のスクリーンショットの下の赤いボックスに表示) を入力して、Web アプリケーションのルート ディレクトリを取得します。 次に、Enter キーを押します。

    注:

    ページ上部のファイル リストが更新され、 Web.config ファイルが表示されます (スクロールして表示する必要がある場合があります)。 ファイルを編集するには、編集アイコン (下の画像の赤いボックスに示すように鉛筆) を選択します。

    web.config ファイルの編集アイコンを示すスクリーンショット。

  5. 次のスクリーンショットで強調表示されている httpCookie とsessionState Cookie の設定を追加します。 system.web セクションが見つからない場合は、次のスクリーンショットに示すサンプルのように追加します。

web.config ファイルの system.web セクションを示すスクリーンショット。

  1. [保存] を選択します。
  2. アドイン Web パーツが期待どおりに動作していることを確認します。

今後のデプロイでは、Web アプリケーションがデプロイされたソース コード プロジェクトにこの変更を追加することをお勧めします。

詳細

.NET Framework更新プログラムの詳細については、「Azure App Service-SameSite Cookie の処理と 4.7.2 パッチ.NET Framework」を参照してください。

さらにヘルプが必要ですか? SharePoint コミュニティにアクセスしてください。