2011-07-29 9 views
3

同じWebアプリケーションに複数のサイトコレクションがあり、あるサイトコレクションから別のサイトコレクションに移動するときにイベントを処理する必要があります。私はサイトのデフォルト言語を変更するための "lcid"クッキーを設定し、ユーザーのプロパティマッピングに値を要求するなど、特定のアクションに必要です。ユーザーが同じWebアプリケーション内のあるサイトコレクションから別のサイトコレクションに移動したときにイベントを検出する方法はありますか?

現在、私はすべてのPostAuthorize Webアプリケーションのリクエストを処理し、現在のユーザーとサイトのコレクションをチェックし、コレクション内の各ユーザーの最後の訪問サイトを保持し、サイト間の移行を検出するとサブスクライバのカスタムイベントを発生させるカスタムHTTPモジュールを使用しています。コレクション。

しかし、私はこのアプローチがウェブアプリケーションのパフォーマンスを低下させると思います。ログからは、ユーザーが単に他のサイトコレクションのページへのリンクをクリックしても、多くのPostAuthorize要求があることがわかります。また、同様の場合には、「次の」サイトコレクションへの一連の要求があり、「前へ」、次に「次へ」への一連の要求が時々あります。また、このモジュールがアクティブなときにSharePoint Designer(ページを編集できません)にいくつかの問題が発生します。

このタスクのより良いアプローチについてアドバイスをいただけますか?前もって感謝します。

答えて

1

1つの方法は、隠しコントロールとクッキーを使用しています。
対象となるすべてのサイトコレクションのすべてのマスターページで非表示のコントロールを保持します。 このコントロールは、現在のサイトコレクションのURLを確認し、Cookieに保存します。 lcidを格納している同じCookie内にある可能性があります。
次回以降のロードでは、CookieのURLと現在のサイトコレクションのURLが試行されます。異なる場合は、実行するコードを呼び出し、CookieのURLを更新します。
これは、httpmoduleよりもパフォーマンスが大幅に軽くなります。

関連する問題