2017-11-15 1 views
0

Hallo alles, was ich versuche, einen Live-Update RSS-Feed für iTunes mit asp.net MVC zu erstellen. Ich kann nicht scheinen, dass der Feed validiert wird, und wenn Sie zu der Seite navigieren, ist die XML nicht wie bei einem Webformular formatiert.itunes rss mit C# MVC

Dies ist die Ansicht

  @model IEnumerable<lofbc.org.Models.media> 

      @{ 
       Layout = null; 
      } 

      <?xml version="1.0" encoding="UTF-8" ?> 

      <rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:itunesu="http://www.itunesu.com/feed" version="2.0"> 

       <channel> 
        <title>Life of Faith Bible Church Podcast</title> 
        <link>@Request.Url.Host</link> 
        <description>Welcome to Life of Faith Bible Church! We are dedicated to bringing you life-changing resources through our podcast and audio messages. You will find a wealth of material that will help you triumph in every area of life.</description> 
        <language>en-us</language> 
        <copyright>New Life Media copyright @DateTime.Now.Year</copyright> 
        <atom:link href="https://www.lofbc.org/rss" rel="self" type="application/rss+xml" /> 

        <!--itunes specific--> 
        <itunes:author>Life of Faith Bible Church</itunes:author> 
        <itunes:summary>Welcome to Life of Faith Bible Church! We are dedicated to bringing you life-changing resources through our podcast and audio messages. You will find a wealth of material that will help you triumph in every area of life.</itunes:summary> 
        <itunes:owner> 
         <itunes:name>Life of Faith Bible Church</itunes:name> 
         <itunes:email>[email protected]</itunes:email> 
        </itunes:owner> 
        <itunes:explicit>No</itunes:explicit> 
        <itunes:image href="http://www.lofbc.org/rss/artwork/artwork.jpg" /> 
        <itunes:category text="Religion & Spirituality"> </itunes:category> 

        @foreach (var item in Model) 
         { 
          var date = item.createdDate.ToString("yyyy"); 
          var path = item.audioPath.ToString().Replace(".f4v", ".mp3"); 

         <item> 
          <title>@item.title</title> 
          <url>http://lofbc-media.s3.amazonaws.com/@date/Audio/mp3/@path</url> 
          <pubDate>@item.createdDate.ToString("MMM dd, yyyy")</pubDate> 
          <description>@item.description</description> 
          <enclosure url="http://lofbc-media.s3.amazonaws.com/@item.createdDate.ToString("yyyy"))/Audio/mp3/@item.audioPath.ToString().Replace(".f4v", ".mp3")" length="" type="audio/mpeg" /> 


          <itunes:summary>@item.description</itunes:summary> 
         </item> 
        } 
       </channel> 
      </rss> 

und dies ist der Controller

  using lofbc.org.context; 
      using lofbc.org.Models; 
      using System; 
      using System.Collections.Generic; 
      using System.Data.SqlClient; 
      using System.Linq; 
      using System.Web; 
      using System.Web.Mvc; 

      namespace lofbc.org.Controllers 
      { 
       public class rssController : Controller 
       { 
        // GET: rss 
        public ActionResult Index() 
        { 
         using (ServiceArchivesEntities db = new ServiceArchivesEntities()) 
         { 
          try 
          { 
           DateTime startDate = DateTime.Parse("01/01/2015 00:00:00"); 

           var MT = (from a in db.tbl_media 
              join b in db.tbl_media_ministers 
              on a.MinisterID equals b.ID 
              select new media 
              { 
               id = a.ID, 
               createdDate = (DateTime)a.CreatedDate, 
               title = a.Title, 
               minister = b.Title + " " + b.FirstName + " " + b.LastName, 
               audioPath = a.PathToAudio, 
               videoPath = a.PathToVideo, 
               views = a.Views, 
               listens = a.Listens, 
               status = a.Status 
              }).Where(t => t.status == 2 && t.createdDate >= startDate).OrderByDescending(t => t.createdDate).Take(100).ToList(); 

           return View(MT); 
          } 
          catch (SqlException ex) 
          { 
           Response.Write(ex.ToString()); 
           return View(); 
          } 

         } 
        } 
       } 
      } 

Live-Demo http://development.lofbc.org/rss

Antwort

0
 <itunes:category text="Religion & Spirituality"> </itunes:category> 

brauchen würde

<itunes:category text="Religion &amp; Spirituality"> </itunes:category> 
sein

iTunes kann auch die zusätzlichen Leerzeilen vor dem <?xml ablehnen. Packen Sie den Razor-Code so fest wie möglich oben auf der Seite:

@model IEnumerable<lofbc.org.Models.media> 
@{ Layout = null; } 
<?xml version="1.0" encoding="UTF-8" ?> 
<rss xmlns:atom="http://www.w3.org/2005/Atom" .... 
+0

Dank ich habe versucht, immer noch die gleichen Ergebnisse. Gibt es eine Möglichkeit, die Seite als HTML anstelle von XML zieht? Ich erhalte diesen Fehler, wenn ich einen Validator verwende Dieser Feed wird nicht validiert. Zeile 2, Spalte 0: XML-Parsing-Fehler: : 2: 0: XML- oder Textdeklaration nicht am Anfang der Entität [help] Zusätzlich Die Interoperabilität mit den meisten Feed-Readern könnte verbessert werden, indem die folgende Empfehlung umgesetzt wird. Feeds sollten nicht mit dem Medientyp "text/html" bedient werden –

+0

Der Fehler hört sich so an, als ob Sie beim Start immer noch eine weiße Leerzeile haben. Umgang mit dem Text/HTML ist hier angesprochen: https://stackoverflow.com/questions/971806/asp-net-mvc-and-text-xml-content-type –

+0

Danke für Ihre Hilfe die Informationen in den Link korrigiert Das Thema. –