273 views(since 2013/10/08)

Making SharePoint Add-ins + Azure Session

こんにちは野呂です。

SharePoint Add-insのSession(セッション)管理でクラスの一部でシリアル化がうまく出来ない問題がありますので、解決策を一番下にリンクしました。

解説

SharePoint Add-ins でアプリを作成してリリースすると、そのままテンプレートを使用すると下記のエラーがでます。

セッション状態をシリアル化できません。’StateServer’ および ‘SQLServer’ モードでは、ASP.NET はセッション状態オブジェクトをシリアル化します。その結果、シリアル化できないオブジェクトまたは MarshalByRef オブジェクトは許可されません。’Custom’ モードのカスタム セッション状態ストアによって類似したシリアル化が実行される場合、同一の制限が適用されます

 

Web.config のSession は、なにも記述されていないので、”InProc” になっています。

なので、”Azure Redis Cache” 、”SQL Server”, “ASP.NET Universal Providers and Session State”等を使用してセッションを保持する仕組みを設定する必要があります。

しかしながら、SharePoint のToken/RefreshToken 管理クラスである。

いくつかのAccessToken管理クラス(SharePointContext他)は標準ではSeriazaibleではありませんので、InProc以外のセッションのSQL Azure, Redis Cache、等はクラスをシリアル化しなければならないです。

しかしながら、いくつかのクラスはライブラリ(dll)の中に定義してありシリアル化の定義ができないので、プログラムを別途作る必要があります。

MSDNにサンプルがありました。私も、実際に Universal Providers でテストしてOKでした。

参考までにどうぞ

Making SharePoint Apps Scale with Azure Redis Cache

野呂清二

Filed Under: Office365Office365 AppSharePoint

About the Author

野呂清二(ご連絡はこちらまで (http://www.exceedone.co.jp/inquiry/)

Leave a Reply




If you want a picture to show with your comment, go get a Gravatar.