创建 RSS 提要 ASP.NET,没有错误但没有数据
本文关键字:有错误 数据 RSS 提要 ASP NET 创建 | 更新日期: 2023-09-27 18:34:17
好的记录,我对Java和RnR比任何.NET都更熟悉。 我已经在这里和那里修复了一些函数中的错误,并在这里和那里谷歌搜索了一些新的"功能",但这不是我的专长。 好的,这是我的问题,我需要为我们 ASP.NET 内置的网站创建一个 RSS 提要。 谷歌提出了一些解决方案,但我以这个为例:http://www.aspfree.com/c/a/C-Sharp/Creating-an-RSS-Feed-with-ASP-Net-Written-in-C-Sharp/
奇怪的是,我让这一切工作,没有我可以看到的错误,但是当我运行它时我只得到一个空白页。 我已经测试了 SQL,它可以工作并返回我想要的行,但我不知道如何诊断它是否连接到数据库或为什么它没有返回任何内容。 代码如下:
ASP.aspx.cs:
using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Xml;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Diagnostics;
//Class for returning RSS feed Data
public partial class rss : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
string sSource;
string sLog;
string sEvent;
sSource = "RSS Feed";
sLog = "Application";
sEvent = "Database Connectiont";
// Connect to the Database
SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=events;Persist Security Info=True;User ID=wa;Password=password;");
// Retrieve the SQL query results and bind it to the Repeater
const string SQL_QUERY = "SELECT EventName, Comments, URL, StartDate FROM event WHERE SaleDateTo > getdate() AND SaleDateFrom < getdate() AND redirecttourl is not null ORDER BY EventDate";
SqlCommand myCommand = new SqlCommand(SQL_QUERY, myConnection);
bool IsDbAvailable = true;
try {
myConnection.Open();
rptRSS.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
rptRSS.DataBind();
myConnection.Close();
}
catch {
IsDbAvailable = false;
if (!EventLog.SourceExists(sSource))
EventLog.CreateEventSource(sSource,sLog);
}
finally {
myConnection.Close();
}
}
protected string FormatForXML(object input)
{
string data = input.ToString(); //cast input to string
// replace those characters disallowed in XML documents
data = data.Replace("&", "&");
data = data.Replace("'"", """);
data = data.Replace("'", "'");
data = data.Replace("<", "<");
data = data.Replace(">", ">");
return data;
}
}
RSS.aspx:
<%@ Page language="c#" CodeFile="rss.aspx.cs" ContentType="text/xml" AutoEventWireup="false" Inherits="rss"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<asp:Repeater id="rptRSS" runat="server">
<HeaderTemplate>
<rss version="2.0">
<channel>
<title>TA On-Sale Feed</title>
<link>http://www.website.com/rss.aspx</link>
<description>All events current on-sale</description>
</HeaderTemplate>
<itemTemplate>
<event>
<title><%#FormatForXML(DataBinder.Eval(Container.DataItem,"EventName"))%>
</title>
<description>
<%#FormatForXML(DataBinder.Eval(Container.DataItem, "Comments"))%>
</description>
<link>http://order.ticketalternative.com<%#DataBinder.Eval(Container.DataItem, "url")%>
</link>
<eventdate>
<%#DataBinder.Eval(Container.DataItem, "StartDate")%>
<eventdate>
</event>
</ItemTemplate>
<FooterTemplate>
</channel>
</rss>
</FooterTemplate>
</asp:Repeater>
</html>
使用 SQLDataAdpter 将结果集填充到 DataTable/Dataset 中,然后将 Dataset/Table 分配给 rtpRSS.DataSource。