2

アップデート

これで、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」は完全に有効なサイト定義です。

サイト アクション メニュー (サイト管理者のみ) の要素として利用できるアプリケーション ページを使用して、この問題を解決できれば幸いです。なりすましを使用すると、このプロセスをうまく誘導できます。別の質問で強調したいくつかの追加の問題があります。

元の質問

非常に具体的なサイト定義を使用して、ファーム管理者以外がサイト コレクションを作成できるようにする必要があります。これらのユーザーは中央管理にアクセスできないため、これらの作成を許可するカスタム ソリューションが必要です。私はいくつかの解決策を試しましたが、推奨されるアプローチについてのコンセンサスが必要です。

  1. カスタム Web サービス - このタスクを実行するためのカスタム Web サービスを作成しましたが、これが大きな頭痛の種となり、Web サービスが SharePoint アプリ プールと同じ ID を使用してアプリ プールで実行されていたにもかかわらず、これを機能させることができませんでした。Web サービス経由でこれを実行しようとすると、フォーム ダイジェストの問題も発生しました。

  2. Web パーツ/アプリケーション ページ - ここでは SharePoint コンテキストにいるため、フォーム ダイジェストの問題はありません。昇格されたコード ブロック内でインスタンス化されます。UI レベルで直接の偽装を試みましたが、偽装が失敗したことを示す UnhandledException が発生しました。

  3. stsadm 周辺のアプリケーション ラッパー - このアプローチの実行可能性を懸念しているため、まだ試していませんが、これよりもクリーンな方法があるのではないでしょうか?

私はこれについて多くを見つけることができないので、これに関するいくつかのガイダンスは役に立ちます.

ありがとう

4

2 に答える 2

0

私は2番に行きます。そのコードは機能するはずです、多分なりすましコードは正しくありませんか?たとえば、通常のようにSPContextを使用することはできません。

また、SharePointサイトのアプリケーションプールのIDに昇格しています。このアカウントには、サイトコレクションを作成するための十分な権限がありますか?[サーバーの全体管理]>[アプリケーション管理]>[Webアプリケーションのポリシー]で確認できます。

于 2010-01-11T02:13:34.513 に答える
0

オプション番号1を使用します。これはおそらく認証の問題です。SharePointにどのようにアクセスしていますか?SDKを使用しますか、それともWebサービスを使用しますか?

于 2009-10-26T05:15:50.017 に答える