سلام به دنبال راهی هستم برای ساخت 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 درست کنم.
با تشکر
مطلب خیلی خوبی بود اما در قسمت 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();
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)