Impossibile allegare un SpemailventrEceiver alla mia lista
-
09-12-2019 - |
Domanda
Sto provando a collegare un spugnolatoreceeviver alla mia libreria dei documenti ..
Prima di tutto ho creato l'eventreceiver utilizzando Visual Studio 2010 ADD -> Ricevitore evento -> Elenco e-mail Eventi -> Libreria documenti -> L'elenco ha ricevuto un messaggio di posta elettronica
Allora ho scritto il codice nella classe generata:
namespace ProvaEmailEvent.EventReceiver1
{
/// <summary>
/// List Email Events
/// </summary>
public class EventReceiver1 : SPEmailEventReceiver
{
/// <summary>
/// The list received an e-mail message.
/// </summary>
public override void EmailReceived(SPList list, SPEmailMessage emailMessage, String receiverData)
{
SPUser currentUser = list.ParentWeb.CurrentUser;
Guid listGUID = list.ID;
SPSecurity.RunWithElevatedPrivileges(() =>
{
using (SPSite sito = new SPSite(list.ParentWebUrl))
{
using (SPWeb web = sito.OpenWeb())
{
foreach (SPEmailAttachment attach in emailMessage.Attachments)
{
SPList elevatedList = web.Lists[listGUID];
SPFile file = elevatedList.RootFolder.Files.Add(attach.FileName, attach.ContentStream);
SPListItem item = file.Item;
item.BreakRoleInheritance(false);
item.SystemUpdate();
AssignPermissionsToItem(item, currentUser, SPRoleType.Contributor);
item.SystemUpdate();
}
}
}
});
}
public static void AssignPermissionsToItem(SPListItem item, SPPrincipal obj, SPRoleType roleType)
{
SPRoleAssignment roleAssignment = new SPRoleAssignment(obj);
SPRoleDefinition roleDefinition = item.Web.RoleDefinitions.GetByType(roleType);
roleAssignment.RoleDefinitionBindings.Add(roleDefinition);
item.RoleAssignments.Add(roleAssignment);
}
.
Il file Elements.xml contiene:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="101">
<Receiver>
<Name>EventReceiver1EmailReceived</Name>
<Type>EmailReceived</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>ProvaEmailEvent.EventReceiver1.EventReceiver1</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
</Receivers>
</Elements>
.
In SharePoint Log Ho trovato messaggi come questo (quando si invia un'e-mail):
Documents _ Microsoft.SharePoint.Utilities.SPEmailMessage __ 18fd777b-039b-402b-ad8a-1e0a5e534d88
The user does not exist or is not unique
Warning An error occurred while processing the incoming e-mail file C:\inetpub\mailroot\Drop\8d8bea9e01cd963600000007.eml. The error was: Object reference not set to an instance of an object.. 18fd777b-039b-402b-ad8a-1e0a5e534d88
The Incoming E-Mail service has completed a batch. The elapsed time was 00:00:00.0156250. The service processed 1 message(s) in total. Errors occurred processing 1 message(s): Message ID: <SP2010DEVNsErKkSoii00000007@SP2010DEV.virtualsp.dev>
.
Ho provato anche con il codice vuoto o con una singola istruzione che ha scritto qualcosa nei registri ...
Qualsiasi suggerimento?
Soluzione
Potrebbe essere che tu abbia un'eccezione NULLPOINTER.
Proverei il debug del ricevitore, come questo:
- .
- Distribuisci la tua soluzione.
- Riavvia il servizio Timer SharePoint Timer (dai servizi).
- in VS Fare clic su Strumenti -> Attacca al processo .
- Fai clic su Aggiorna
- Trova quello chiamato owstimer.exe e allegarsi a questo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange