مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

sara-y

عضویت از 1392/11/02

ساخت Rss feed در asp.net

  • شنبه 3 آبان 1393
  • 16:18
تشکر میکنم

سلام به دنبال راهی هستم برای ساخت Rss feed در Asp.net اما بهترین چیزی که پیدا کردم راه حل زیر هستش که اون هم هنگامی که روی سرور آپلود می شه کار نمی کنه و parser error از خط اول aspx می گیره.

قسمت aspx کد (البته مشکل از debug="true" نیست چون وقتی که این قسمت رو پاک می کنم هم باز هم مشکل داره)

<%@ Page ResponseEncoding="UTF-8" Language="C#" AutoEventWireup="true" debug="true" CodeFile="Default.aspx.cs" Inherits="mysite.feed.Default" %>
<%@ OutputCache Duration="300" VaryByParam="none" %>

قسمت aspx.cs کد:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Xml;
using System.Text;
using System.Configuration;

namespace mysite.feed
{
    public partial class Default : System.Web.UI.Page
    {
        db_mysite context=new db_mysiteEntities();
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Clear();
            Response.ContentType = "application/rss+xml";
            XmlTextWriter objX = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
            objX.WriteStartDocument();
            objX.WriteStartElement("rss");
            objX.WriteAttributeString("version", "2.0");
            objX.WriteStartElement("channel");


            objX.WriteElementString("title", "mysite.com Rss Feed");
            objX.WriteElementString("link", "mysite.com/");
            objX.WriteElementString("description", "");
            objX.WriteElementString("language", "en-us");
            objX.WriteElementString("ttl", "60");
            objX.WriteElementString("image", "");
            objX.WriteElementString("lastBuildDate", String.Format("{0:R}", DateTime.Now));

            var b = (from c in context.News where c.IsActive == true  select c).ToList();

            foreach (var newse in b)
            {
                int txt = newse.NewsID;
                var g = (from c in context.News_Group_Connections
                         where c.NewsID == txt
                         join r in context.News_Group on c.NewsGroupID equals r.NewsGroupID
                         select r.NewsGroupTitle).First();

                objX.WriteStartElement("item");
                objX.WriteElementString("title", newse.NewsTitle);
                objX.WriteElementString("author", "VBasic.net");
                objX.WriteElementString("link", newse.NewsLinkAddress);
                objX.WriteStartElement("guid");
                objX.WriteAttributeString("isPermaLink", "true");
                objX.WriteString("mysite.com/");
                objX.WriteEndElement();
                //objX.WriteElementString("pubDate", DateTime.Parse(newse.NewsDate.ToString()).ToString("MM/dd/yyyy"));
                objX.WriteElementString("pubDate", String.Format("{0:R}", newse.NewsDate));
                objX.WriteStartElement("category");
                objX.WriteString(g);
                objX.WriteEndElement();
                objX.WriteElementString("description", newse.NewsDescription);
                objX.WriteEndElement();
            }
            //while (dr.Read())
            //{
            //    objX.WriteStartElement("NewsTitle");

            //    objX.WriteEndElement();
            //    objX.WriteElementString("description", dr["Article"].ToString().Substring(0, 100) + "..");
            //    objX.WriteEndElement();
            //}

            objX.WriteEndElement();
            objX.WriteEndElement();
            objX.WriteEndDocument();
            objX.Flush();
            objX.Close();
            Response.End();
        }
    }
}

می خواستم بپرسم که آیا مشکل این کد قابل رفع هست؟...اگر نیست چطور می تونم یک Rss feed در Asp.net درست کنم.

با تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 3 آبان 1393
  • 16:36
کاربر سایت

sara-y

عضویت از 1392/11/02

  • یکشنبه 4 آبان 1393
  • 21:08

مطلب خیلی خوبی بود اما در قسمت sqlconnection  به مشکل بر خورد کردم چون وقتی کد رو اجرا می کنم خطا می گیره و می گه:

object reference not set to an instance of an object asp.net

و با وجود اینکه کد رو تغییر دادم اجرا نمی شه...

ممنون می شم اگه در این زمینه هم کمکم کنید...

این کد cs من هستش:

db_MyExampleDbEntities context=new db_MyExampleDbEntities();
        protected void Page_Load(object sender, EventArgs e)
        {
            //Response.Clear();
            //Response.ContentType = "application/rss+xml";
            //XmlTextWriter objX = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
            //objX.WriteStartDocument();
            //objX.WriteStartElement("rss");
            //objX.WriteAttributeString("version", "2.0");
            //objX.WriteStartElement("channel");

            ////SqlCommand cmd = new SqlCommand("Select TOP 10 * From News ORDER BY ID DESC", new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString));
            ////cmd.Connection.Open();
            ////SqlDataReader dr = cmd.ExecuteReader();

            //objX.WriteElementString("title", "SuicidePrevention.care Rss Feed");
            //objX.WriteElementString("link", "http://SuicidePrevention.care/");
            //objX.WriteElementString("description", "");
            //objX.WriteElementString("language", "en-us");
            //objX.WriteElementString("ttl", "60");
            //objX.WriteElementString("image", "");
            //objX.WriteElementString("lastBuildDate", String.Format("{0:R}", DateTime.Now));

            //var b = (from c in context.News where c.IsActive == true  select c).ToList();

            //foreach (var newse in b)
            //{
            //    int txt = newse.NewsID;
            //    var g = (from c in context.News_Group_Connections
            //             where c.NewsID == txt
            //             join r in context.News_Group on c.NewsGroupID equals r.NewsGroupID
            //             select r.NewsGroupTitle).First();
                 
            //    objX.WriteStartElement("item");
            //    objX.WriteElementString("title", newse.NewsTitle);
            //    objX.WriteElementString("author", "VBasic.net");
            //    objX.WriteElementString("link", newse.NewsLinkAddress);
            //    objX.WriteStartElement("guid");
            //    objX.WriteAttributeString("isPermaLink", "true");
            //    objX.WriteString("http://SuicidePrevention.care/");
            //    objX.WriteEndElement();
            //    //objX.WriteElementString("pubDate", DateTime.Parse(newse.NewsDate.ToString()).ToString("MM/dd/yyyy"));
            //    objX.WriteElementString("pubDate", String.Format("{0:R}", newse.NewsDate));
            //    objX.WriteStartElement("category");
            //    objX.WriteString(g);
            //    objX.WriteEndElement();
            //    objX.WriteElementString("description", newse.NewsDescription);
            //    objX.WriteEndElement();
            //}
            ////while (dr.Read())
            ////{
            ////    objX.WriteStartElement("NewsTitle");
                
            ////    objX.WriteEndElement();
            ////    objX.WriteElementString("description", dr["Article"].ToString().Substring(0, 100) + "..");
            ////    objX.WriteEndElement();
            ////}

            //objX.WriteEndElement();
            //objX.WriteEndElement();
            //objX.WriteEndDocument();
            //objX.Flush();
            //objX.Close();
            //Response.End();
            Response.Clear();
            Response.ContentType = "application/rss+xml";
            XmlTextWriter objX = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
            objX.WriteStartDocument();
            objX.WriteStartElement("rss");
            objX.WriteAttributeString("version", "2.0");
            objX.WriteStartElement("channel");
            SqlCommand cmd = new SqlCommand("Select TOP 10 * From News ORDER BY ID DESC", new SqlConnection(ConfigurationManager.ConnectionStrings["Server=.;User ID=sa; Database=db_MyExampleDb; Password=Mypass"].ConnectionString));
            cmd.Connection.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            objX.WriteElementString("title", "مرجع تخصصی برنامه نویسی | آموزش برنامه نویسی");
            objX.WriteElementString("link", "http://www.madaeny.com/");
            objX.WriteElementString("description", "آموزش برنامه نویسی و مقالات برنامه نویسی نمونه کد های سی شارپ آموزش برنامه نویسی در آموزشگاه برنامه نویس");
            objX.WriteElementString("language", "fa-ir");
            objX.WriteElementString("ttl", "60");
            objX.WriteElementString("image", "http://www.madaeny.com/SiteImages/logo.png");
            objX.WriteElementString("lastBuildDate", String.Format("{0:R}", DateTime.Now));
            while (dr.Read())
            {
                objX.WriteStartElement("item");
                objX.WriteElementString("title", dr["NewsTitle"].ToString());
                objX.WriteElementString("author", "C# .net");
                objX.WriteElementString("link", "http://www.madaeny.com/");
                objX.WriteStartElement("guid");
                objX.WriteAttributeString("isPermaLink", "true");
                objX.WriteString("http://www.madaeny.com/");
                objX.WriteEndElement();
                objX.WriteElementString("pubDate", String.Format("{0:R}", dr["NewsDate"]));
                objX.WriteStartElement("category");
                objX.WriteString(dr["Category"].ToString());
                objX.WriteEndElement();
                objX.WriteElementString("description", dr["NewsDescription"].ToString());
                objX.WriteEndElement();
            }
            objX.WriteEndElement();
            objX.WriteEndElement();
            objX.WriteEndDocument();
            objX.Flush();
            objX.Close();
            Response.End(); 

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)