webForumDet fria alternativet

RSS-Feed

2 svar · 690 visningar · startad av MagnusJ

MagnusJMedlem sedan apr. 2004150 inlägg
#1

Tja

Jag har gjort en rss-feed för att ha på min sida. Jag har använt mig av den här artikeln http://www.dileno.com/default.aspx?CatId=4&ArtId=52.

Allting fungerar förutom en grej. Vid första laddning av sidan så får jag det här felmeddelandet

XML-tolkningsfel: inget element hittat
Adress: http://localhost/nyhet/rss.aspx
Radnummer 1, Kolumn 1:

Sidan innehåller alltså inget. Om jag sedan uppdaterar den så får jag fram allting och det fungerar perfekt. Jag har försökt att hitta felet men hittar det inte.

Här är min kod.

using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Caching;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;

public partial class rss : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["csNyhet"].ConnectionString))
        {
            try
            {
                SqlCommand command = new SqlCommand("HamtaNyheterRSS", connection);
                command.CommandType = CommandType.StoredProcedure;

                connection.Open();

                SqlDataReader reader = command.ExecuteReader();

                Response.ContentType = "text/xml";
                Response.ContentEncoding = Encoding.UTF8;

                StringWriter sw = new StringWriter();
                XmlTextWriter rw = new XmlTextWriter(sw);

                rw.WriteStartElement("rss");
                rw.WriteAttributeString("version", "2.0");
                rw.WriteStartElement("channel");
                rw.WriteElementString("title", "Nyheter från min nyhetssida");
                rw.WriteElementString("link", "http://www.minsida.se");
                rw.WriteElementString("description", "Visar de fem senaste nyheterna från min nyhetssida");
                rw.WriteElementString("language", "sv-se");
                rw.WriteElementString("copyright", "Copyright (c) 2007 minsida");

                while (reader.Read())
                {
                    rw.WriteStartElement("item");
                    rw.WriteElementString("title", reader["nRubrik"].ToString());
                    rw.WriteElementString("link", "http://localhost/nyhet/nyhet.aspx?id="+ reader["nID"]);
                    rw.WriteElementString("description", reader["nNyhet"].ToString());
                    rw.WriteElementString("pubDate", System.Convert.ToDateTime(reader["nDatum"]).ToString("F"));
                    rw.WriteEndElement();
                }

                reader.Close();
                rw.WriteEndElement();
                rw.WriteEndElement();
                rw.Close();
                if (Cache.Get("rss") == null)
                {
                    Cache.Insert("rss", sw.ToString(), null, DateTime.Now.AddHours(1), TimeSpan.Zero);
                }
                else
                {
                    Response.Write(Cache["rss"]);
                }
                sw.Close();

            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

Vad tror ni kan vara fel?

emissionMedlem sedan dec. 19996 721 inlägg
#2

Felet är att du i ena läget stoppar in i cachen, och i andra skriver ut. Du vill ju skriva ut i båda lägena.

MagnusJMedlem sedan apr. 2004150 inlägg
#3

Aha, nu ser jag :) Tack för hjälpen!

140 ms totalt · 3 externa anrop · v20260731065814-full.30151723
137 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)