0

サイト コレクションに Web パーツとカスタム Web テンプレートを提供するには、カスタム グループを作成する必要があります。私は次の方法でそれを行います:

     using (SPSite site = properties.Feature.Parent as SPSite)
        {
            if (site != null)
                using (SPWeb rootWeb = site.RootWeb)
                {

                    try
                    {
                        rootWeb.AllowUnsafeUpdates = true;
                        rootWeb.SiteGroups.Add("Admins", site.Owner, site.Owner, "Admins");

                        try
                        {
                            SPGroup sp_grpAdmins = rootWeb.SiteGroups["Admins"];
                            SPRoleDefinition sp_rldAdmins = 
                            rootWeb.RoleDefinitions.GetByType(SPRoleType.Administrator);
                            sp_rldAdmins.Name = "Admin rights";
                            sp_rldAdmins.Description = "all";
                            rootWeb.RoleDefinitions.Add(sp_rldAdmins);
                            SPRoleAssignment sp_rlaAdmins = new SPRoleAssignment(sp_grpAdmins);
                            sp_rlaAdmins.RoleDefinitionBindings.Add(
                            rootWeb.RoleDefinitions["Admin rights"]);
                            rootWeb.RoleAssignments.Add(sp_rlaAdmins);
                            sp_grpAdmins.Update();
                            rootWeb.Update();
                        }
                        catch (ArgumentException argex)
                        {

                        }
        }
    }

このコードを Web パーツに追加すると (サンプルのデバッグ用 - デバッグするイベント レシーバーを取得できません)、グループが作成されます。機能イベント レシーバーをデバッグする方法、または機能イベント レシーバーでは実行できない制限があるかどうかを知っていますか? どうもありがとうございました。

4

1 に答える 1

0

Visual Studio をw3wp.exeに接続することで、イベント レシーバーをデバッグできます。機能を手動でアクティブ化する必要があることに注意してください。これは、自動の場合、プロセスがすべての DLL をロードする前にアクティブ化されるためです。

私が通常行うことは、サイトをインストールすることです。パッケージを展開します。

Visual Studio で Ctr+Alt+P (Menu->Debug->Attache to process) を押します。これにより、マシンで実行されているすべてのプロセスが開きます。w3wp.exeプロセスが存在しない場合は、[すべてのユーザーのプロセスを表示する] と [すべてのセッションのプロセスを表示する] にチェックを入れてください。リストですべてのw3wp.exeプロセスを選択し、[接続] をクリックします。セキュリティの警告について尋ねられます。[OK] をクリックします (必要に応じて数回クリックします)。

接続したら、「サイト コレクション機能」でイベント レシーバーを使用して手動で機能を有効にします。すべてがうまくいけば -> これで停止し、デバッグを続行できます。

イベント レシーバーで停止しなかった場合は、プロジェクトを再コンパイルすることをお勧めします。再度パッケージ化して再デプロイします。IIS のリセット後 - これにより、GAC から DLL がリセットされます。

Visual Studio プロジェクトは DEBUG モードにする必要があることに注意してください...

もしあなたに質問があるのなら...

それが役に立てば幸い、

アンドリュー

于 2013-01-22T12:36:03.477 に答える