SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




EventReceiver in Sandboxed Solution

Unbeantwortet Dieser Beitrag hat 10 Antworten

Ohne Rang
255 Beiträge
stephan12345 erstellt 8 Sept. 2011 12:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe einen EventReceiver auf ItemAdded (auf ListTemplateID = 101).
Dieser funktioniert in ein Farmsolution einwandfrei.
Schalte ich auf Sandboxed Solution um, dann kann ich diese zwar ohne Probleme deployen,
der Event wird aber leider nicht ausgelöst.
Muss ich da noch etwas einstellen oder geht das nicht in einer Sandboxed Solution ?

Danke und Gruß
Stephan

 

Alle Antworten

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 8 Sept. 2011 12:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

IMHO geht das nicht da sich EventReceiver im GAC befinden müssen, was für eine Sandbox Solution nicht geht.

Schau mal im Event Log bzw im SharePoint Log dort solltest du was finden entweder beim Deployen oder wenn das Event ausgelöst wird

Ohne Rang
255 Beiträge
stephan12345 Als Antwort am 8 Sept. 2011 13:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Thomas,

was mich ein wenig wundert ist, dass das auf einer Microsoft Seite für den Typ Ankündigungen gemacht wurde:

http://msdn.microsoft.com/en-us/library/gg981880.aspx

Gruß

Stephan

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Sept. 2011 13:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe es selbst noch nicht getestet, aber entweder ist der MSDN-Artikel falsch (was nicht der erste wäre) oder Du hast in Deinem EventReceiver Code, der in der Sandbox nicht ausgeführt wird. Schau mal in die Logs.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
255 Beiträge
stephan12345 Als Antwort am 8 Sept. 2011 13:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

bin froh wenn ich erst einmal minimalistischen Code zum laufen bekomme, daher:

SPListItem currentListItem = properties.ListItem;
currentListItem["Value1"] = "TestValue";
currentListItem.Update();

Sollte gehen, wenn in einer Sandboxed Solution das überhaupt erlaubt sein sollte.

Gruß
Stephan

Ohne Rang
255 Beiträge
stephan12345 Als Antwort am 8 Sept. 2011 13:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

bin froh wenn ich erst einmal minimalistischen Code zum laufen bekomme, daher:

SPListItem currentListItem = properties.ListItem;
currentListItem["Value1"] = "TestValue";
currentListItem.Update();

Sollte gehen, wenn in einer Sandboxed Solution das überhaupt erlaubt sein sollte.

Gruß
Stephan

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Sept. 2011 14:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In welchem Ereignis führst Du das aus? Es geht so nicht in ItemAdding, ItemUpdating u.a. Was passiert denn, wenn Du es Dir im Debugger anschaust?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
255 Beiträge
stephan12345 Als Antwort am 8 Sept. 2011 14:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Debuggen geht gar nur wenn ich auf Farm-solution umstelle.

Anonsten:

public class EventReceiver1 : SPItemEventReceiver {        
       
     public override void ItemAdded(SPItemEventProperties properties) {
            SPListItem currentListItem = properties.ListItem;
            currentListItem["Value1"] = "TestValue";
            currentListItem.Update();
      }
 }
 und

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListTemplateId="101">
    <Receiver>
        <Name>EventReceiver1ItemAdded</Name>
        <Type>ItemAdded</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>EventReceiverIPFile.EventReceiver1.EventReceiver1</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>

  </Receivers>
</Elements>

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Sept. 2011 14:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das sieht grundsätzlich gut aus. Ich würde an Deiner Stelle zuerst schauen, daß ich debuggen kann. Ohne wirst Du nicht weiterkommen.

Außerdem kannst Du Logging einbauen und Dir so Nachrichten in die SharePoint-Logs schreiben lassen (Stichwort SPDiagnosticsService).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
255 Beiträge
stephan12345 Als Antwort am 8 Sept. 2011 14:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

so wie es für mich aussieht geht das Loggen anscheinend nicht bei Sanbox und EventReceivern.
Anderen Code aus einer Sandboxed Solution kann ich ja debuggen.

Aber in den Log schreiben ist schon mal ein guter Ansatz. Probiere ich aus.

Danke und Gruß

Stephan

Ohne Rang
255 Beiträge
stephan12345 Als Antwort am 8 Sept. 2011 15:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mitlerweile funktioniert der EventReceiver auf einer Testmaschine automatisch.

Ich habe ja das Gefühl dass das Aktivieren des EventReceivers in einer Sandboxed Solution nicht gleich passiert auf dem Server.

Wir sollten in der UserGroup bei Euch mal eine Session über Erfahrungsaustausch Sandboxed Solutions machen ;-)

Gruß
Stephan