
27 Februar 2010, 14:22 von
klaus_b1388 mal gelesen.Wer die Ping Dienste von BlogEngine.NET verwendet, sollte sich einmal die Klasse PingService.cs und die Beschreibung der verwendeten XML-RPC API auf Weblogs.com ansehen. BlogEngine.NET sendet als zweiten Parameter im XML-RPC Request die komplette URL des gerade veröffentlichten Artikel. Gefordert wird aber lediglich die Basis-URL des sendenden Blog. Dieses Verhalten ist wohl schon mehreren Benutzern von BlogEngine.NET aufgefallen. So schreibt z.B.: Gabriele Lässer in ihrem Artikel Modifizierte Version BlogEngingeNET 1.5.0.7, Zitat:
“Ping-Dienste bestehen fallweise darauf, dass stattdessen nur die Blog-URL selbst angegeben wird.
Sie blockieren/ignorieren so fehlerhafte Pings gerne oder gar das versendende Blog.”
Im oben genannten Artikel bietet Gabriele Lässer auch gleich eine passende Lösung an. Dieser Ansatz ist zwar für die Version 1.5.0.7 gedacht, sollte in der aktuellen Version aber ebenfalls funktionieren.
Für mein Empfinden, ist die genannte Lösung etwas zu aufwendig gestaltet. Der Knackpunkt ist ein zusätzlich benötigter Wert, in dem die Basisadresse des jeweiligen Blog gespeichert wird. In der angesprochenen Lösung, wird die genannte Adresse in den Blogeinstellungen gespeichert, was einiges an Änderungen der bestehenden Installation nach sich zieht. Vor allem bei Updates ist es immer mühsam und zeitraubend, die ganzen Änderungen in die neuere Version zu übernehmen.
Da BlogEngine.NET immer die Komplette URL des jeweiligen Artikel sendet, ist die Basis-URL in der Artikel-URL ja bereits vorhanden. Also kann mit einem Einzeiler die ganze Problematik gelöst werden.
//writer.WriteElementString("value", url.ToString());
writer.WriteElementString("value", url.GetLeftPart(UriPartial.Authority) + Utils.RelativeWebRoot);Der Ansatz aus Gabriele Lässers Artikel bietet noch einiges mehr. Unter anderem auch die Möglichkeit eines Extended Ping XML-RPC Request, mit dem auch der RSS-Feed oder Tags des Blog mit gesendet werden können.
Fazit:
Wer die erweiterte Funktionalität eines Extended Ping XML-RPC Request verwenden will, der sollte sich den Ansatz aus Gabriele Lässers Artikel einmal genauer ansehen.
Wer eine pragmatische Lösung sucht, der braucht nur eine Zeile Code in der Datei PingService.cs, wie im obigen Listing gezeigt, auszutauschen.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
