当前位置:编程学习 > C#/ASP.NET >>

冰天雪地裸体跪求大神指导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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,