サイトコレクションの自動作成
-
16-10-2019 - |
質問
非農場の管理者が、非常に具体的なサイト定義を使用してサイトコレクションを作成できるようにする必要があります。これらの人々はセントラル管理者にアクセスできないため、これらの作成を可能にするためにカスタムソリューションが必要です。私はいくつかの解決策を試しましたが、推奨されるアプローチに関するコンセンサスが必要です。
カスタムWebサービス - このタスクを実行するためのカスタムWebサービスを作成しましたが、これは大きな頭痛を引き起こし、WebサービスがSharePointアプリプールと同じアイデンティティを使用してアプリプールで実行されていましたが、これを機能させることができませんでした。また、このv ia a webサービスを実行しようとする際に、ダイジェストの問題がありました。
Webパーツ/アプリケーションページ - フォームダイジェストの問題はSharePointのコンテキストにあるため、ここにはDigestの問題はありませんが、RunWithelevatedPrivilegesを使用しようとしましたが、すべてのSPSiteおよびSPWEB PBディスクがあっても、spwebbapplication.sites.add()を呼び出すと、アクセスが拒否されます。高架コードブロック内にインスタンス化されています。私はUIレベルで直接のなりすましを試みましたが、なりすましが失敗したと言って、手持ちのないexceptionを受け取りました。
STSADM周辺のアプリケーションラッパー - このアプローチの実行可能性を心配しているので、これをまだ試みていません。
私はこれについて多くを見つけることができないので、これに関するいくつかのガイダンスは役に立ちます。
ありがとう
解決
問題は、RWEPを使用してサイトコレクションを作成できないことです。 RWEPはアプリプールのIDを取得し、ほとんどの場合(農場を正しく構成した場合)、このアカウントは農場の管理者グループのメンバーではありません。これはサイトコレクションを作成するために必要です。しかし、Central Adminでコードを実行すると、農場管理者であるCAアプリプールの身元が取られるため、機能します。
したがって、この機能を作成するためのいくつかのオプションがあります。
- ファーム管理者にアプリプールアカウントに付与し、通常どおりに進めることができます - 推奨されません!
- このサイトを作成するためにセントラル管理者にWebアプリを作成します - 推奨されない、ユーザーにCAを公開したくない
- いくつかのタイマージョブを作成し(ファーム管理者として実行)、タイマージョブがチェックするリストに「サイトコレクションリクエストの作成」を追加します。次に、タイマージョブがサイトCOLLを作成し、最終的に作成されたときにサイトCOLLを要求したユーザーに電子メールを送信します。ユーザーがサイトcollを持つまで、それはわずかな遅延(タイマージョブの実行頻度に応じて)になります。
- CAでWebサービスを作成して、サイトCollを作成します。次に、カスタムコードからこのWebサービスを呼び出します。
私は成功した2つの最後のアプローチを使用しました。
/ww