アップデート
これで、UI の偽装を正常に実行できるようになりました。これは私が使用していたコードの問題であり、Jay Nathan の記事を読んだ後、彼のコードに戻しましたが、すべて問題なく動作しています。
コメントに応えて、これは私が新しいサイト コレクションを作成するために使用しているコードです。
Dim newSite As SPSite = webApp.Sites.Add( _
txtWebApp.Text & "/cg/" & strURL, txtName.Text, txtDesc.Text, 1033, "SITEDEF#0", _
"DOMAIN\ACCOUNT", "NAME", "EMAIL", _
"DOMAIN\ACCOUNT", "NAME", "EMAIL")
はい、「SITEDEF#0」は完全に有効なサイト定義です。
サイト アクション メニュー (サイト管理者のみ) の要素として利用できるアプリケーション ページを使用して、この問題を解決できれば幸いです。なりすましを使用すると、このプロセスをうまく誘導できます。別の質問で強調したいくつかの追加の問題があります。
元の質問
非常に具体的なサイト定義を使用して、ファーム管理者以外がサイト コレクションを作成できるようにする必要があります。これらのユーザーは中央管理にアクセスできないため、これらの作成を許可するカスタム ソリューションが必要です。私はいくつかの解決策を試しましたが、推奨されるアプローチについてのコンセンサスが必要です。
カスタム Web サービス - このタスクを実行するためのカスタム Web サービスを作成しましたが、これが大きな頭痛の種となり、Web サービスが SharePoint アプリ プールと同じ ID を使用してアプリ プールで実行されていたにもかかわらず、これを機能させることができませんでした。Web サービス経由でこれを実行しようとすると、フォーム ダイジェストの問題も発生しました。
Web パーツ/アプリケーション ページ - ここでは SharePoint コンテキストにいるため、フォーム ダイジェストの問題はありません。昇格されたコード ブロック内でインスタンス化されます。UI レベルで直接の偽装を試みましたが、偽装が失敗したことを示す UnhandledException が発生しました。
stsadm 周辺のアプリケーション ラッパー - このアプローチの実行可能性を懸念しているため、まだ試していませんが、これよりもクリーンな方法があるのではないでしょうか?
私はこれについて多くを見つけることができないので、これに関するいくつかのガイダンスは役に立ちます.
ありがとう