Frage

Ich habe einen Sharepoint-Ereignisempfänger geschaffen, das Feuer auf Artikel aktualisieren. Der Empfänger benötigt Zugriff AfterProperties und ListItem.

Beim Brennen des Ereignisempfängers aus einer Sharepoint-Web-Anwendung mit einer IP-Adresse ( http://10.0.4.50/sites / ), wirft es ein FileNotFoundException , wenn in SPItemEventProperties SITEID Und WebUrl erreichbar. Die Web-Anwendung unter http://10.0.4.50/sites/companyName konnte nicht gefunden werden . Stellen Sie sicher, dass Sie die URL korrekt eingegeben haben.

Wenn das Ereignis Empfänger Brennen des Host-Namen verwenden, bei der Installation von Site Collection angegeben http: // computerhostname / sites / company . Dies funktioniert gut, wird keine Ausnahme ausgelöst.

//Combine Both AfterProperties And ListItem
var ListProperties = new List<KeyValuePair<string, object>>();
ListProperties.AddRange(properties.AfterProperties.ToKeyValue());
ListProperties.AddRange(properties.ListItem.ToKeyValue(p => !p.Sealed));
var AvaliableProperties = ListProperties.Distinct(new KeyValueComparer<object>());
War es hilfreich?

Lösung

Dies ist nicht unbedingt ein Sharepoint-Problem, aber es ist sehr wahrscheinlich bis auf die Art und Weise, dass IIS auf dem Host konfiguriert ist. Ein besonderer Ort kann „gebunden“, um eine IP-Adresse und einen Hostnamen, und wenn der Hostname ist nicht in der HTTP-GET vom Browser gesendete dann kehrt IIS eine 404 NOT FOUND.

Sie können dies überprüfen, indem Sie einen Browser verwenden, um zu sehen, ob Sie die Website von IP-Adresse zugreifen können.

Sie können zusätzliche Bindungen hinzufügen, wenn nötig, aber nur eine „default“ Bindung pro IP-Adresse sein kann, so dass nur eine Seite kann gegenwärtig sein (in diesem Fall) 10.0.4.50.

Ein möglicher Weg, um die Situation, in der mehrere Standorte vorhanden sind, aber nicht einen Hostnamen verwenden können, könnte sein, eine Bindung an einen anderen Port als Port 80 für diese IP hinzuzufügen, so dass Ihre URL so etwas wie http://10.0.4.50:8080/sites/companyName werden würde.

Andere Tipps

Dies ist nicht nur ein IIS-Problem, aber Sharepoint als auch bezogen. Viele Referenzierung in Sharepoint durch die Verwendung einer URL als Ausgangspunkt durchgeführt wird (nur Blick auf den Konstruktor SPSite). Die URL wird dann im Vergleich zu bekannten URLs in Sharepoint Config-Datenbank. (Und ofr Dateien usw. in der Inhaltsdatenbank der Website).

verwendet Sharepoint ein System Alternate Access Mappings genannt verschiedenen URLs zu einer Web-Anwendung "Zonen" zuweisen (Standard, Intranet, Internet, ... individuelle Definition). Wenn es nicht die ‚genau‘ URL findet, wird intern Sachen scheitern (und vor allem die Suche ist sehr „URL sensitive“).

Dann kommt den IIS-Teil ins Spiel: Da IIS wahrscheinlich keine andere Seite hat auf dem Port 80 läuft, und ohne einen bestimmten Hostheader (so wird standardmäßig Computernamen) oder mit dem Hostheader Satz auf die Rechnernamen, wird IIS wählen auf Wunsch und da Sharepoint in diesem Webapp gebunden ist, wird Sharepoint versuchen, es zu verarbeiten, sieht die URL auf, ist Sharepoint nicht die URL finden und thne „Pausen“.

Die keine Hostheader tritt auf, wenn Sie den Hostheader Feld leer lassen, wenn Sie eine neue Webanwendung in Sharepoint erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top