0

ファームレベルでソリューションを展開する場合、さまざまなサイトコレクションの所有者がそのソリューションに存在する機能をアクティブ化するのを防ぐ方法はありますか?

4

3 に答える 3

3

サイト コレクションのユーザーが特定の機能を有効にできないようにする簡単な方法は、その機能を非表示にすることです。これらの機能は、ファーム管理者のみが STSADM コマンドを使用してアクティブ化できるようになります。

機能を非表示にするには、以下に示すように、Feature 要素の Hidden 属性を「TRUE」に更新します。

<Feature 
      Id="AD2146D-62DA-4911-DBC1-AE177DE40084"
      Title="Restricted Web Parts" 
      Hidden="TRUE"
      .../>

あるいは、SharePoint 2010 を使用している場合は、Feature Pack を使用して、一連の機能を特定のユーザー セットに対象とすることで、この問題を解決できます。

于 2010-05-28T15:42:12.053 に答える
1

Zevenseas 機能ブロッカーをご覧ください。

于 2010-05-28T17:54:56.340 に答える
0

機能のアクティブ化中にエラーが発生した場合、機能はアクティブ化されず、要素マニフェストの一部として展開された可能性のある効果は取り消されます。

したがって、これを巧妙に使用することで、機能レシーバーの FeatureActivated 部分を使用して、誰がそれをアクティブ化しているかを確認し、UnauthorizedAccessException をスローして、機能をアクティブ化できない理由を詳述する適切なエラー メッセージをスローできます。これは、指定したメッセージとともに標準の SharePoint エラー ページとして表示されます。機能に機能レシーバーが既にある場合は、これを FeatureActivated 部分の先頭に追加して、プログラムによるアクションが発生しないようにする必要があります (要素マニフェストとは異なり、これらはアクティベーションに失敗しても取り消されません)。

以前にフィーチャー レシーバーを使用したことがない場合は、それを確立するために 2 つの部分だけが必要です。

  1. 機能の機能 XML で、次の 2 つの属性を Feature ノードに追加します。

    ReceiverAssembly=(four-part-assembly-string)
    ReceiverClass=(full namespace.class name of receiver class)
    
  2. レシーバー クラスを記述します。これは から継承され、 、、、およびSPFeatureReceiverで 4 つのオーバーライドが必要です。最後の 3 については何もする必要はありません。メソッドにセキュリティ チェックを記述します。FeatureActivatedFeatureDeactivatingFeatureInstalledFeatureUninstallingFeatureActivated

于 2010-05-28T12:47:46.223 に答える