<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
string HostUrl;
string HttpHead ;
string CateID;
protected void Page_Load( object sender, EventArgs e )
{
if(Request.QueryString["id"] == null)
{
Response.Write("<error>error</error>");
Response.End();
return;
}
CateID = Request.QueryString["id"].ToString();
int cateid = 0;
try
{
cateid = Convert.ToInt32(CateID);
}
catch(Exception xx)
{
Response.Write("<error>no number</error>");
Response.End();
return;
}
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("reslib.config"));
string DataSource,UserID,Password;
XmlNode node = doc.SelectSingleNode("/configuration/company/product[@name = 'reslib']");
if(node == null)
{
node = doc.SelectSingleNode("/configuration/system");
}
if(node == null)
{
Response.Write("<error>no config node</error>");
Response.End();
return;
}
DataSource = node.SelectSingleNode("add[@key = 'DataSource']/@value").InnerText;
UserID = node.SelectSingleNode("add[@key = 'UserID']/@value").InnerText;
Password = node.SelectSingleNode("add[@key = 'Password']/@value").InnerText;
string ConnectionString = "Data Source=" + DataSource + ";Initial Catalog=reslib5;User Id=" + UserID + ";Password=" + Password + ";";
SqlConnection cn = new SqlConnection(ConnectionString);
cn.Open();
HttpContext context = HttpContext.Current;
HostUrl = context.Request.Url.ToString();
HostUrl = HostUrl.Substring(0,HostUrl.IndexOf("/",8));
XmlTextWriter writer = new XmlTextWriter(context.Response.OutputStream, System.Text.Encoding.UTF8);
WriteRSSPrologue(writer);
WriteRSSHeadChennel(writer);
string sql="select top 10 R_Title,R_Href,R_createdate From T_Resource";
SqlCommand cmd = new SqlCommand(sql,cn);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
DateTime dt;
while(dr.Read())
{
AddRSSItem(writer,(((DateTime)dr["R_createdate"]).ToUniversalTime()).ToString("r"),dr["R_Title"].ToString(),HostUrl + dr["R_Href"].ToString());
}
dr.Close();
cn.Close();
cn = null;
writer.Flush();
writer.Close();
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.ContentType = "text/xml";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.End();
dr.Close();
cn.Dispose();
}
private XmlTextWriter WriteRSSPrologue(XmlTextWriter writer)
{
writer.WriteStartDocument();
writer.WriteStartElement("rss");
writer.WriteAttributeString("version","2.0");
writer.WriteAttributeString("xmlns:dc","http://purl.org/dc/elements/1.1/");
writer.WriteAttributeString("xmlns:trackbac","http://madskills.com/public/xml/rss/module/trackback/");
writer.WriteAttributeString("xmlns:wfw","http://wellformedweb.org/CommentAPI/");
writer.WriteAttributeString("xmlns:slash","http://purl.org/rss/1.0/modules/slash/");
writer.WriteAttributeString("xmlns:blogChannel","http://backend.userland.com/blogChannelModule");
writer.WriteAttributeString("xmlns:copyRight","http://dotnet.aspx.cc/");
return writer;
}
private XmlTextWriter WriteRSSHeadChennel(XmlTextWriter writer)
{
writer.WriteStartElement("channel");
writer.WriteElementString("title","最新资源");
writer.WriteElementString("link","http://" + HostUrl + "/");
writer.WriteElementString("description","孟宪会");
writer.WriteElementString("copyright","孟宪会 ");
writer.WriteElementString("generator","孟宪会 RSS 生成器 2.0");
return writer;
}
private XmlTextWriter AddRSSItem(XmlTextWriter writer, string pubDate, string sItemTitle, string sItemLink)
{
writer.WriteStartElement("item");
writer.WriteElementString("title",sItemTitle);
writer.WriteElementString("link",sItemLink);
writer.WriteElementString("description",sItemTitle);
writer.WriteElementString("pubDate", pubDate);
writer.WriteEndElement();
return writer;
}
private XmlTextWriter AddRSSItem(XmlTextWriter writer, string sItemTitle, string sItemLink, string sItemDescription, bool bDescAsCDATA)
{
writer.WriteStartElement("item");
writer.WriteElementString("title",sItemTitle);
writer.WriteElementString("link",sItemLink);
if (bDescAsCDATA == true)
{
writer.WriteStartElement("description");
writer.WriteCData(sItemDescription);
writer.WriteEndElement();
}
else
{
writer.WriteElementString("description",sItemDescription);
}
writer.WriteElementString("pubDate", DateTime.Now.ToString("r"));
writer.WriteEndElement();
return writer;
}
private XmlTextWriter WriteRSSClosing(XmlTextWriter writer)
{
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
return writer;
}
</script>