2

サイト コレクションのルートから作成されたサイトで問題なく動作するイベント レシーバー (WebAdding および WebProvisioned) があります。ただし、サブサイト (たとえば、他の領域内に作成されたチーム サイト) は、コードをまったくトリガーしません。

誰かが理由について何か考えがありますか?

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
using System.Text;

namespace TestEventReceiver.EventReceiver1
{
  /// <summary>
  /// Web Events
  /// </summary>
  public class EventReceiver1 : SPWebEventReceiver
  {
    /// <summary>
    /// A site is being provisioned.
    /// </summary>
    public override void WebAdding(SPWebEventProperties properties)
    {
      base.WebAdding(properties);

      using (SPWeb web = properties.Web)
      { 
        StringBuilder output = new StringBuilder();
        output.AppendFormat("Web Adding");
        output.AppendFormat("<br>Web title: {0}",web.Title);
        SendMyEmail(web, "SendItToMe@MyTestAddress.com", "Web Adding", output.ToString());
      }
    }

    /// <summary>
    /// A site was provisioned.
    /// </summary>
    public override void WebProvisioned(SPWebEventProperties properties)
    {
      base.WebProvisioned(properties);
      using (SPWeb web = properties.Web)
      {
        StringBuilder output = new StringBuilder();
        output.AppendFormat("Web Provisioned");
        output.AppendFormat("<br>Web title: {0}", web.Title);
        SendMyEmail(web, "SendItToMe@MyTestAddress.com", "Web Provisioned", output.ToString());
      }
    }

    private void SendMyEmail(SPWeb Web, String toAddress, String subject, String message)
    {
      bool appendHtmlTag = false;
      bool htmlEncode = true;
      SPSecurity.RunWithElevatedPrivileges(delegate()
      {
        SPUtility.SendEmail(Web, appendHtmlTag, htmlEncode, toAddress, subject, message);
      });

    }

  }
}

前もってありがとう、マット

4

5 に答える 5

2

'Using'を使用するべきではないと思います。取得するSPWebオブジェクト参照は、WebAddingメソッドに渡されるproperties.Webからのものです。このため、問題が発生します。

于 2011-07-12T03:15:32.940 に答える
1

イベント レシーバーがどのようにプロビジョニングされているかを確認してください。スコープを Web ではなくサイトに変更する必要があるかもしれません。おそらく、ここに投稿して、確認できるようにすることができます。

于 2011-11-14T11:38:54.353 に答える
1

私のサイトでも同じ問題がありました。まだxmlファイルを理解していますが、レシーバーのElements.xmlファイルでは、各レシーバーに同じシーケンス番号がありました。Elements.xml ファイル内でそれらを一意にすると、WebProvisioned イベントが発生し始めました。これがあなたが抱えていた問題と同じかどうかはわかりません。

于 2012-01-26T23:20:35.410 に答える
0

このコードは WebAdding イベントを示しており、そのイベントは親 Web で発生しています。

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver.webadding.aspx

于 2011-04-07T04:27:42.583 に答える