webForumDet fria alternativet
Logga in / Bli medlem

RSS-Feed

.NET

2 svar · 692 visningar · startad av MagnusJ

Medlem sedan apr. 2004150 inlägg
Frågan#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?

Medlem 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.

Medlem sedan apr. 2004150 inlägg
#3

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

254 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)