冰天雪地裸体跪求大神指导RSS订阅器遇到的问题。
参考的是ASP.NET3.5实例精通的例子,还有一个51ASPX网站上下的源码。遇到了一个问题,就是点击RSS FEED 的链接时,能成功进入RSS订阅页面,但是一但选择我们要看的文章标题,进入文章内容时就跳网页错误,不调试选择忽略的话,页面上所有的功能控件就都失效了,能单击,但没反应。
第一次做这个,小白求大神指导。 --------------------编程问答-------------------- 这是根据地址生成订阅源页面的代码
using System;--------------------编程问答-------------------- 我再说明下问题,具体问题是这样的:
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using NET.AfritXia.RssFoundation;
using System.Data.SqlClient;
using RssModel;
using System.Xml;
using System.Configuration;
public partial class ArticleContent : System.Web.UI.Page
{
dao d = new dao();
protected void Page_Load(object sender, EventArgs e)
{
//<?xml-stylesheet type="text/css" href="allrss.css"?>
//声明一个Rss工厂类
RssFactory rssFac = new RssFactory();
//创建Rss工厂类对象
rssFac.RssItemTagConverter = new MyRssItemTag();
//创建 RSS 实例
Rss newRss = rssFac.Create();
//生成该频道的程序名
newRss.Root.Channel.Generator = "Rss List";
//该频道的标题
newRss.Root.Channel.Title = "该发布地址:http://localhost:46119/Rss/ArticleXML.aspx";
//该频道的链接
newRss.Root.Channel.Link = "http://www.baidu.com";
newRss.Root.Channel.Description = "发布文章列表";
//数据项
newRss.AddDataItems(this.GetNewsDS().Tables["News"].Rows);
//该RSS频道的版权信息
newRss.Root.Channel.Copyright = "Copyright © 2012 lamupen 版权所有";
//指定输出类型
Response.ContentType = "text/xml";
//将RSS数据以指定格式输出
newRss.WriteXmlContent(Response.OutputStream);
}
private DataSet GetNewsDS()
{
string connectionString = ConfigurationManager.AppSettings["DBConn"].ToString();
//string sql = "select * from [RssSend]";
string sql = string.Format("select * from [RssSend] where Owner='{0}'",d.GetUserName());
// 创建数据库连接
SqlConnection dbConn = new SqlConnection(connectionString);
// 创建数据适配器
SqlDataAdapter dbAdp = new SqlDataAdapter(sql, dbConn);
DataSet ds = new DataSet();
dbAdp.Fill(ds, "News");
return ds;
}
}
class MyRssItemTag : IRssItemTagConverter
{
public RssItemTag Convert(object obj)
{
DataRow dr = obj as DataRow;
RssItemTag rssTag = new RssItemTag();
if (dr != null)
{
//标题
rssTag.Title = System.Convert.ToString(dr["Title"]);
//连接
rssTag.Link = System.Convert.ToString(dr["Link"]);
//摘要
rssTag.Description = System.Convert.ToString(dr["Description"]);
//发布者
rssTag.Author = System.Convert.ToString(dr["Author"]);
//发布时间
rssTag.PubDate = System.Convert.ToDateTime(dr["PubDate"]);
}
else
{
rssTag = null;
}
return rssTag;
}
}
我使用了ASP.NET3.5实例精通里的关于RSS读取的例子,代码如下:
//程序名称:RssRead .aspx.cs
//程序功能:创建简易Rss阅读器
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
public partial class RssRead : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 读取Rss数据
/// </summary>
/// <param name="rssURL">Rss源的地址</param>
public void GetRSSItem(string rssURL)
{
//建立了一个WebRequest对象,它接收一个RSS源的URL
System.Net.WebRequest myRequest = System.Net.WebRequest.Create(rssURL);
//使用WebResponse对象,来存放请求的响应
System.Net.WebResponse myResponse = myRequest.GetResponse();
//使用WebResponse对象来建立一个流,来存放获取的XML的值
System.IO.Stream rssStream = myResponse.GetResponseStream();
//创建一个XmlDocument对象,来存储流中的XML内容
System.Xml.XmlDocument rssDoc = new System.Xml.XmlDocument();
//加载流
rssDoc.Load(rssStream);
//选择节点,准备读取数据
System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");
string title = ""; //标题
string link = ""; //连接
string description = ""; //摘要
string date = ""; //时间
string author = ""; //新闻来源
//读取每一项的内容
for (int i = 0; i < rssItems.Count; i++)
{
System.Xml.XmlNode rssDetail;
//读取标题
rssDetail = rssItems.Item(i).SelectSingleNode("title");
if (rssDetail != null)
{
title = rssDetail.InnerText;
}
else
{
title = "";
}
//读取连接
rssDetail = rssItems.Item(i).SelectSingleNode("link");
if (rssDetail != null)
{
link = rssDetail.InnerText;
}
else
{
link = "";
}
//读取摘要
rssDetail = rssItems.Item(i).SelectSingleNode("description");
if (rssDetail != null)
{
description = rssDetail.InnerText;
}
else
{
description = "";
}
//读取时间
rssDetail = rssItems.Item(i).SelectSingleNode("pubDate");
if (rssDetail != null)
{
date = rssDetail.InnerText;
}
else
{
date = "";
}
//读取来源
rssDetail = rssItems.Item(i).SelectSingleNode("author");
if (rssDetail != null)
{
author = rssDetail.InnerText;
}
else
{
author = "";
}
//输出内容的构造
string strOutText = "<p><b><a href='" + link + "' target='new'>" + title + "</a></b><br>" + description;
//如果时间不为空
if (date != "")
{
strOutText += "<font size=2><b>时间:" + date + "</b></font>";
}
//如果作者不为空
if (author != "")
{
strOutText += "<font size=2><b>作者:" + author + "</b></font>";
}
strOutText += "</p>";
//输出内容到阅读器的页面
Response.Write(strOutText);
}
}
//读取rss
protected void btnRead_Click(object sender, EventArgs e)
{
string rssURL = txtUrl.Text.Trim();
//显示当前的RSS Feed地址
Label1.Text = "<font size=5><b>Site: " + rssURL + "</b></font><Br />";
GetRSSItem(rssURL);
}
}
然后我输入了 互联网那些事
这个站点的文章基本上都是转载的,但是由于站长是个比较有品味geek,所以刊载的文章质量都很高。早期这个网站在业界火起来的时候,大家都在猜测是否和阿里集团有关系,因为域名实在太有阿里风格了,后来p迪在知乎上澄清了这点。
订阅地址:http://www.alibuybuy.com/feed 这个订阅地址。
单击文章标题进入文章正文页面时,跳了个网页错误的提示框:
[img=http://b156.photo.store.qq.com/psb?/b77e167d-830e-438d-98ea-95f0a1afea67/2ATfD4jvnEXrvdqzQ0z4N8k51H0Y8f7WRuxQ2Fh4SyU!/b/YWP8Cl34CgAAYmuECV2mCgAA][/img]
跪求大神讲解原因,并对解决方案给予指导。。 T,T
补充:.NET技术 , ASP.NET