Sharepoint 2010 Приемник событий не стреляет по дочернему сайту - PullRequest
1 голос
/ 06 апреля 2011

У меня есть приемник событий (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);
      });

    }

  }
}

Заранее спасибо, Мэтт

Ответы [ 5 ]

2 голосов
/ 12 июля 2011

Я думаю, что вы не должны использовать «Использование».Ссылка на объект SPWeb вы получаете из properties.Web, который передается методу WebAdding.Из-за этого у вас возникнут проблемы.

1 голос
/ 27 января 2012

На моем сайте была такая же проблема. Все еще выясняю файлы xml, но в моем файле Elements.xml для получателей каждый получатель имел одинаковый порядковый номер. Как только я сделал их уникальными в файле Elements.xml, событие WebProvisioned начало срабатывать. Не знаю, была ли это та же проблема, что и у вас.

1 голос
/ 14 ноября 2011

Посмотрите, как настроен ваш получатель событий - возможно, область должна быть изменена на Сайт, а не на Интернет. Возможно, вы могли бы опубликовать здесь, чтобы мы могли видеть.

0 голосов
/ 01 июля 2013

Попробуйте изменить область действия получателя (в атрибуте файла Elements.xml добавьте атрибут). Также убедитесь, что функция вашего приемника событий активирована в функциях вашего сайта на дочернем сайте.

0 голосов
/ 07 апреля 2011

Этот код показывает событие WebAdding, и это событие происходит в родительской сети.

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

...