ホーム>source

ユーザーの認証にSharePointコンテキストフィルターを使用するプロバイダーホスト型アプリがあります。最初の要求で生成されたコンテキストトークンをセッション変数に格納し、それを後続の呼び出しで使用しています。

サイトのコンテンツでアプリをクリックしてプロバイダーがホストするアプリにリダイレクトされると、すべてが正常に機能しています。

しかし、プロバイダーがホストするアプリでホストされるクライアントWebパーツがあるSharePoint Onlineのページに移動すると、セッションが機能しません。

アプリのWebパーツとアプリが直接開かれたときに送信されるリクエストヘッダーを調べると、 ASP.NET_SessionId が見つかりましたCookieはアプリのWebパーツに保存されませんが、プロバイダーがホストするアプリに直接移動した場合。

また、私はその SPCacheKey を見つけました両方のケースでCookieが保存されていますが、アプリのWebパーツを介してロードするときにセッションCookieのみが保存されません。

私はこれをChromeとIEでテストしましたが、どちらも同じ出力を出しています。

これに従ってweb.configを変更してみましたリンク

<前>ウィズウィズ

しかし、それは問題を解決しませんでした。セッションが保存されないため、プロバイダーがホストするアプリのすべてのajax呼び出しがappredirect.aspxにリダイレクトされ、スローされています

ウィズウィズ

アプリのWebパーツを介してロードするときにASP.NETセッションID Cookieが保存されないのはなぜですか? 助けてください

<system.webServer> <httpProtocol> <customHeaders> <add name="p3p" value="CP=&quot;IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT&quot;"/> </customHeaders> </httpProtocol> </system.webServer>
あなたの答え
  • 解決した方法 # 1

    グーグルで多くの異なるキーワードを使用してこの問題の解決策を検索した後、最終的に解決策を見つけました。これはiFrameの問題のようです。アプリのWebパーツがiframe内に読み込まれると、セッションCookieはiframe内に保存されません。

    この回答とこのリンクに従って、 cookieSameSite=None を追加   sessionState の属性   web.config の  問題を修正しました。

    <前>ウィズウィズ

    いつものように、これは <sessionState cookieSameSite="None" cookieless="false" timeout="360"> </sessionState> のデフォルト値を変更したMSによるアップデートリリースが原因でした。   cookieSameSite からのセッションCookieの属性  ウィズウィズへ

    None

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ c# - LinQクエリは同じテーブルを2回グループ化します