Event Receiver не работает все время
Я работаю на сервере sharepoint 2013 и использую VS2013.
Моя задача - создать Приемники событий в пользовательском списке, я использовал событие ItemAdded на нем.
Все работает хорошо:
Перейти к списку >> создать новый элемент >> получатель события был запущен напрямую.
Затем я создаю пользовательскую форму (используя веб-часть) для своего списка, но приемник событий не сработал! (Эта веб-часть является настраиваемой формой, которая содержит те же поля, что и список, и когда я отправляю новый запрос, в списке создается новый элемент)
Наконец, я заметил, что приемник событий работает, когда элемент добавляется только в список, и не работает, когда я добавляю новый элемент в список извне!
Обратите внимание, что я использовал этот сценарий раньше, и он работал.
Код моего получателя событий:
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
using ProjectName.SharePoint.Utility.Code;
using ProjectName.SharePoint.EventReceiver.Code;
namespace ProjectName.SharePoint.EventReceiver.TestEvtRvr
{
public class TestEvtRvr : SPItemEventReceiver
{
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
if (Helper.GetListInternalName(properties, properties.List.DefaultDisplayFormUrl).Equals(ListName.Test))
{
RequestDetails requestDetails = new RequestDetails();
requestDetails.emailTemplatetListInternalName = "EmailTemplates";
requestDetails.userTemplate = "Test_USER";//User template, stored in SP list.
try
{
if (!String.IsNullOrWhiteSpace(Convert.ToString(properties.AfterProperties[Columns.Email])))
requestDetails.email = Convert.ToString(properties.AfterProperties[Columns.Email]);
DateTime saveNow = DateTime.Now;
requestDetails.created = saveNow.ToString();
if (properties.ListItem.Fields.ContainsField(Columns.RequestNumber))
properties.ListItem[Columns.RequestNumber] = requestDetails.requestNumber;
properties.ListItem.Update();
requestDetails.emailTokens.Add("[Email]", requestDetails.email);
requestDetails.emailTokens.Add("[RequestNumber]", requestDetails.requestNumber);
requestDetails.emailTokens.Add("[CreatedOn]", requestDetails.created);
}
catch (Exception ex)
{
Utilities.WriteToEventViewer(ex);
}
if (!String.IsNullOrEmpty(requestDetails.email))
{
try
{
//Send Email to User
if (!string.IsNullOrWhiteSpace(requestDetails.userTemplate))
{
Helper.SendEmailFromTemplate(requestDetails.email, null, null, requestDetails.userTemplate, requestDetails.emailTokens, properties.OpenWeb(), requestDetails.emailTemplatetListInternalName);
}
else
{
Utilities.WriteToEventViewer("\nTest: User Template is not defined");
}
}
catch (Exception ex)
{
Utilities.WriteToEventViewer(ex);
}
}
base.ItemAdded(properties);
}
}
}
element.xml:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListUrl="Lists/Test">
<Receiver>
<Name>TestEvtRvrItemAdded</Name>
<Type>ItemAdded</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>ProjectName.SharePoint.EventReceiver.TestEvtRvr.TestEvtRvr</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
</Receivers>
</Elements>
может кто-нибудь помочь, пожалуйста