So erhalten Sie das HttpContext-in Event-Handler -
Ich versuche zu erhalten, den HTTPContext in einem Ereignis-Handler in einem Dokument Bibliothek in MOOS, aber alle die ich habe, ist ein null-Wert des HTTPContext.Aktuellen, ich tun die gleiche Sache auf eine Liste und der HTTPContext wird zurückgegeben. Es ist ein Weg, um die HTTPContext-in Dokument Bibliotheken für den Zugriff auf den HTTPContext.Request-Methode?
Vielen Dank für Ihre Hilfe
Hier ist der code:
public class TestContextListItemEventReceiver : SPItemEventReceiver
{
HttpContext current;
static object obj;
///<summary>
///Initializes a new instance of the Microsoft.SharePoint.SPItemEventReceiver class.
///</summary>
public TestContextListItemEventReceiver()
{
current = HttpContext.Current;
}
public override void ItemAdding(SPItemEventProperties properties)
{
obj = current;
}
}
InformationsquelleAutor Esteban Lalinde | 2009-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schritt 1
Erklären:
Schritt 2
Schritt 3
Schritt 4
Diese Version funktioniert, solange nur ein Benutzer änderungen Elemente zur gleichen Zeit. Sie wird sehr wahrscheinlich laufen in Rennen Bedingungen in einer Multi-User-Umgebung.
[ThreadStatic], um Ihre privaten HttpContext currentContext.
InformationsquelleAutor Sudhakar roy
Ich Stand vor dem gleichen Problem, wenn ich versuche zu aktualisieren, einige benutzerdefinierte Felder in meinem Dokument in der Bibliothek, wenn neue Dokumente hochladen, das Feld war (ProjectID), die ich legte es in eine session in meinem webpart (der Schritt vor dem hochladen des Dokuments).
Was ich gemacht habe ist: ich habe die
projectID
in den cache (pro Nutzer) in der benutzerdefinierten webpart fungiert als eine Sitzung wie folgt:Dann habe ich realisiert das
ItemAdded
Ereignis und ich bekomme den Wert von der zwischengespeichertenprojectId
durch:InformationsquelleAutor Mohammed Barakat
Ein Element Ereignis-Empfänger asynchron ausführen; Sie haben keinen Zugriff auf die HTTP-Anforderung, die das event initiiert.
InformationsquelleAutor dahlbyk
Können Sie fangen den HttpContext in beiden SPList-und Dokument-Bibliotheken, wenn Sie laden Sie das Dokument aus der SharePoint-Oberfläche (Internet-Explorer). Aber wenn Sie speichern Sie das Dokument von Microsoft Word die HttpContext-nicht anzutreffen, ich weiß nicht, warum.
InformationsquelleAutor Esteban Lalinde
Versuchen Sie es mit der HttpRuntime-Klasse
InformationsquelleAutor Johan Leino
Ich kann das session-Objekt von innen ItemAdding-Ereignis, wenn der Benutzer versuchen, um ein Dokument zu uploaden, aber das problem ist das httpcontext.Strom ist immer null, wenn der Benutzer das hochladen mehrerer Dokumente mit dem document-library-option ( upload mehrerer Dokumente )
InformationsquelleAutor Mohammed Barakat
Können Sie fake die HttpContext-und SPContext in der event-Empfänger wie beschrieben in meinem post:
http://pholpar.wordpress.com/2011/06/26/injecting-httpcontext-and-spcontext-into-the-event-receiver-context/
InformationsquelleAutor pholpar
Wenn Sie es in einer statischen variable wie, dass, Sie haben auch mehrere Leute mit dem gleichen Kontext-Objekt, das den Kontext des Benutzers, der erste lief der event-Empfänger und gleichzeitige Veränderungen könnten zu unerwarteten Ergebnissen führen.
Dem Kontext entfernt wird, um design, um Menschen zu ermutigen, es nicht zu verwenden. Sie sollten versuchen, zu verwenden die Eigenschaften, die ausgesetzt sind, so viel wie möglich, um Kompatibilitätsprobleme zu vermeiden später.
Sie können den Benutzernamen aus den Eigenschaften.Web.CurrentUser als ein Beispiel.
Verwendung von statischen Variablen in den Ereignis-Empfänger ist heikel, und Sie haben sich daran zu erinnern, wenn Sie mehrere front-ends, die Daten in der statischen variable ist nicht verfügbar, außerhalb der Oberfläche, die die Instanz der event-receiver läuft.
InformationsquelleAutor Westley