.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 ファイルを更新するには、次の手順に従います。
Azure portalで Web アプリケーション設定に移動します。
[ 高度なツール] を選択し、[ 移動] を選択します。
Kudu 画面で、[ デバッグ コンソール] を選択し、[CMD] を選択 します。
[ファイル ビュー] 画面で、CD site\wwwroot コマンド (次のスクリーンショットの下の赤いボックスに表示) を入力して、Web アプリケーションのルート ディレクトリを取得します。 次に、Enter キーを押します。
注:
ページ上部のファイル リストが更新され、 Web.config ファイルが表示されます (スクロールして表示する必要がある場合があります)。 ファイルを編集するには、編集アイコン (下の画像の赤いボックスに示すように鉛筆) を選択します。
次のスクリーンショットで強調表示されている httpCookie とsessionState Cookie の設定を追加します。 system.web セクションが見つからない場合は、次のスクリーンショットに示すサンプルのように追加します。
- [保存] を選択します。
- アドイン Web パーツが期待どおりに動作していることを確認します。
今後のデプロイでは、Web アプリケーションがデプロイされたソース コード プロジェクトにこの変更を追加することをお勧めします。
詳細
.NET Framework更新プログラムの詳細については、「Azure App Service-SameSite Cookie の処理と 4.7.2 パッチ.NET Framework」を参照してください。
さらにヘルプが必要ですか? SharePoint コミュニティにアクセスしてください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示