Rss20FeedFormatter Ignoriert den TextSyndicationContent-Typ für SyndicationItem.Summary

8

Bei der Verwendung der Rss20FeedFormatter-Klasse in einem WCF-Projekt habe ich versucht, den Inhalt meiner Beschreibungselemente mit einem Abschnitt <![CDATA[ ]]> zu umbrechen. Ich habe festgestellt, dass der HTML-Inhalt der Beschreibungselemente immer codiert war und der CDATA-Abschnitt nie hinzugefügt wurde. Nachdem ich in den Quellcode von Rss20FeedFormatter geblickt habe, habe ich festgestellt, dass beim Erstellen des Knotens Zusammenfassung im Grunde eine neue Instanz von TextSyndicationContent erstellt wird, die die zuvor festgelegten Einstellungen löscht ( Ich denke ).

Mein Code

%Vor%

... (Der folgende Code sollte die Zusammenfassung mit einem CDATA-Abschnitt umbrechen)

%Vor%

Rss20FeedFormatter-Code (AFAIK, der obige Code funktioniert wegen dieser Logik nicht)

%Vor%

Als Workaround habe ich den RSS20FeedFormatter verwendet, um den RSS zu erstellen und den RSS dann manuell zu patchen. Zum Beispiel:

%Vor%

...

%Vor%

Die Idee für diese Problemumgehung kam von der folgenden Stelle, ich habe sie einfach so angepasst, dass sie mit WCF anstelle von MVC funktioniert. Ссылка

Ich frage mich nur, ob das einfach ein Fehler in Rss20FeedFormatter oder ist es von Entwurf? Außerdem, wenn jemand eine bessere Lösung hat, würde ich es gerne hören!

    
Page Brooks 26.08.2011, 12:48
quelle

3 Antworten

2

Nun @Page Brooks, ich sehe das mehr als eine Lösung dann als eine Frage :). Vielen Dank!!! Und um deine Frage (;) zu beantworten, ja, ich denke definitiv, das ist ein Fehler im Rss20FeedFormatter (obwohl ich es nicht so weit verfolgt habe), weil genau das selbe Problem aufgetreten ist, das du beschrieben hast.

Sie haben eine 'localhost: 8732' Empfehlung in Ihrem Post, aber sie war nicht auf meinem localhost;). Ich denke, dass Sie die Problemumgehung 'PostProcessOutputBuffer' diesem Beitrag gutschreiben wollten: Ссылка

Oder eigentlich ist es nicht in diesem Post, sondern in einem Kommentar von David Whitney, den er später hier in einem eigenen Text zusammenfasste: Ссылка

Danke, dass Sie die Problemumgehung besser an meine Bedürfnisse angepasst haben, weil ich die Problemumgehung ebenfalls gefunden hatte, aber immer noch Schwierigkeiten hatte, die Anpassung von MVC vorzunehmen. Nun musste ich nur noch Ihre Lösung optimieren, um den RSS-Feed der aktuellen Http-Anfrage im .ashx-Handler hinzuzufügen, in dem ich ihn verwendet habe.

Im Grunde nehme ich an, dass das Update, das Sie mit dem CDataSyndicationContent erwähnt haben, vom Februar 2011 stammt, vorausgesetzt, Sie haben es von diesem Post bekommen (zumindest habe ich es getan): SyndicationFeed: Inhalt als CDATA?

Dieser Fix funktioniert nicht mehr in einer neueren ASP.NET-Version oder etwas, weil der Code von Rss20FeedFormatter zu dem geändert wurde, was Sie in Ihren Post geschrieben haben. Diese Codeänderung könnte auch eine Verbesserung für andere Dinge sein, die im MVC-Framework enthalten sind, aber für diejenigen, die den CDataSyndicationContent-Fix verwenden, verursacht dies definitiv einen Fehler!

    
Bart 23.05.2013 22:31
quelle
0

Ich habe den Code für Cdata woanders gefunden

%Vor%

Code, um es etwas entlang der Linien zu nennen:

%Vor%

Die Funktion "WriteContentsTo" wurde jedoch nicht aufgerufen.

Statt Rss20FeedFormatter habe ich Atom10FeedFormatter ausprobiert - und es hat funktioniert! Offensichtlich gibt es Atom Feed statt traditionellen RSS - aber erwähnenswert.

Ausgabecode ist:

%Vor%     
Daf 18.08.2015 11:35
quelle
0
%Vor%

Ich bin mir sicher, dass jemand schon darauf hingewiesen hat, aber das ist ein dummer Workaround, den ich benutzt habe. t.OutputSettings ist vom Typ XmlWriterSettings, wobei cdataSections mit einer einzigen XmlQualifiedName "description" gefüllt wird.

Ich hoffe, es hilft jemand anderem.

    
hwnd 24.12.2015 19:00
quelle

Tags und Links