• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 基于C# 网站地图制作

基于C# 网站地图制作

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了基于c/s,基于c 的图书管理系统,基于c 的毕业设计,基于c/s架构,基于c/s模式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
1、 我们的网站是用C#开发的,我们采用数据库存储所有文章信息。所以我们的文章都是动态地从数据库中提取出来的。这点很不利于蜘蛛的顺藤摸瓜。
2、 这点嘛,嘿嘿,就有些勉强了。做个网站地图,可以让用户对敝网站的内容一目了然,能起到很好的导航作用。
鉴于上述原因,于是乎,俺就决定为俺地“赤兔英语网”做一个网站地图。由于Google等搜索引擎所需的网站地图必须是XML文件,所以俺决定做网页形式和XML形式两种网站地图。我们的网站是用C#开发的,当然是使用C#语言来编写俺地网站地图了,赫赫。
首先,我们来看看,我们的网站地图该怎么生成,怎么展现。简单思考之后,我决定这样做。网站首页的菜单中添加“网站地图”选项,其链接着网页形式的网站地图,页面名字为sitemap.html;首页的底部也添加链接“网站地图”,其链接着XML格式的网站地图,页面名字为sitemap.xml。这两个页面生成程序在后台添加。设置一个按钮,管理员在一段时间内点击该按钮,直接生成这两个文件,放在网站的根目录下,供客户端随时调用。
下面,我们来看看生成网站地图的代码的具体实现。为了文章可读性,我们从顶向下来对code实现过程做以介绍。
一、网站地图的顶层设计
顶层的网站地图生成按钮的code为:
protected void BtnGenerateSitemap_Click(object sender, EventArgs e)
{
createHtmlSitemap();
createXMLSitemap();
WebUtility.ResponseScript("网站地图生成完毕!",0);
}
上面code一目了然,createHtmlSitemap()用来生成html网站地图,createXMLSitemap()用来生成XML网站地图。
二、Html网站地图的生成
我们先介绍Html网站地图的生成。createHtmlSitemap()的code如下:
public void createHtmlSitemap()
{
FileInfo HtmlFile = null;
StreamWriter WriteHtmlFile = null;
string FilePath = Server.MapPath("sitemap.html");//获取html文件路径及名称
HtmlFile = new FileInfo(FilePath);//创建html文件
WriteHtmlFile = HtmlFile.CreateText();
WriteHtmlFile.WriteLine("<html>");
WriteHtmlFile.WriteLine("<head>");
WriteHtmlFile.WriteLine("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>");
WriteHtmlFile.WriteLine("<title>赤兔英语网 网站地图</title>");
WriteHtmlFile.WriteLine("</head>");
WriteHtmlFile.WriteLine("<body>");
getHtmlSitemapData(WriteHtmlFile);
WriteHtmlFile.WriteLine("</body>");
WriteHtmlFile.WriteLine("</html>");
WriteHtmlFile.Close();
}
上述code创建了html文件sitemap.html,并使用对象StreamWriter书写了sitemap.html。函数getHtmlSitemapData(WriteHtmlFile)完成了sitemap.html正文部分的组织。
需要注意的是,如果网站地图中有中文,必须将charset设置为UTF-8。否则中文不能正常显示。
public void getHtmlSitemapData(StreamWriter writerFile)
{
string classTableName = "ArticleClass";
string articleItemTableName = "ArticleItem";
string connectionString = ConfigurationManager.AppSettings["SQLConnString"].ToString();
SqlConnection conn = new SqlConnection(connectionString);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
//查询大类信息
SqlDataAdapter classDataAdpt = new SqlDataAdapter("SELECT Id, Classname FROM " + classTableName, connectionString);
DataSet classDataSet = new DataSet();
classDataAdpt.Fill(classDataSet, classTableName);
writerFile.WriteLine("<table border='1' width='1000px'cellspacing='0' cellpadding='0'>");
//按照大类信息来查取各个大类下的文章信息
for (int i = 0; i < classDataSet.Tables[0].Rows.Count; i++)
{
string tempsql = "SELECT Id, ArticleTitle, Parentid FROM " + articleItemTableName + " where Parentid = " + classDataSet.Tables[0].Rows[i][0].ToString();
SqlCommand cmd = new SqlCommand(tempsql, conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr.HasRows)
{
int classId = 0;
int rowNum = 0;//记录处理了篇文章信息
int memberInLine = 5;//每行显示多少篇文章的链接信息
while (rdr.Read())
{
//处理大类信息,大类也需要以超链接的方式写入html文件
if (classId != int.Parse(rdr[2].ToString()))
{
rowNum = 0;
classId = int.Parse(rdr[2].ToString());
writerFile.WriteLine("<tr>");
writerFile.WriteLine("<td colspan='5'>");
writerFile.WriteLine("<a style='font-size:15px;font-weight:bold;' target='_blank' href='http://www.chituwang.com/Article/index.aspx?parentid=" + classDataSet.Tables[0].Rows[i][0].ToString() + "'>" + classDataSet.Tables[0].Rows[i][1].ToString() + "</a>");
writerFile.WriteLine("</td>");
writerFile.WriteLine("</tr>");
}
//处理文章信息
rowNum++;
if (1 == (rowNum % memberInLine))//a new line
{
writerFile.WriteLine("<tr>");
}
writerFile.WriteLine("<td style='width:200px'>");
writerFile.WriteLine("<a target='_blank' href='http://www.chituwang.com/Article/index.aspx?articleid=" + rdr[0].ToString() + "'>" + rdr[1].ToString() + "</a>");
writerFile.WriteLine("</td>");
if (0 == (rowNum % memberInLine))//a new line
{
writerFile.WriteLine("</tr>");
}
}
}
rdr.Close();
}
writerFile.WriteLine("</table>");
}
三、XML网站地图的生成
XML网站地图的生成与Html不同点在于,Google等搜索引擎对这种网站地图的格式有严格的要求,必须遵守,否则不会被他们承认。具体xml文件格式可参考http://www.chituwang.com/Article/WZJS/detail.aspx?articleid=18092
createXMLSitemap()函数的实现如下:
public void createXMLSitemap()
{
FileInfo XMLFile = null;
StreamWriter WriteXMLFile = null;
string FilePath = Server.MapPath("sitemap.xml");
XMLFile = new FileInfo(FilePath);
WriteXMLFile = XMLFile.CreateText();
//下面两句话必须写,而且不能做任何修改
WriteXMLFile.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
WriteXMLFile.WriteLine("<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">");
getXMLSitemapData(WriteXMLFile);
WriteXMLFile.WriteLine("</urlset>");//别忘了这句话
WriteXMLFile.Close();
}
createXMLSitemap()的实现如下:
public void getXMLSitemapData(StreamWriter writerFile)
{
string classTableName = "ArticleClass";
string articleItemTableName = "ArticleItem";
string connectionString = ConfigurationManager.AppSettings["SQLConnString"].ToString();
SqlConnection conn = new SqlConnection(connectionString);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
//查询大类信息
SqlDataAdapter classDataAdpt = new SqlDataAdapter("SELECT Id, Classname FROM " + classTableName, connectionString);
DataSet classDataSet = new DataSet();
classDataAdpt.Fill(classDataSet, classTableName);
for (int i = 0; i < classDataSet.Tables[0].Rows.Count; i++)
{
string tempsql = "SELECT Id, ArticleTitle, Parentid FROM " + articleItemTableName + " where Parentid = " + classDataSet.Tables[0].Rows[i][0].ToString();
SqlCommand cmd = new SqlCommand(tempsql, conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr.HasRows)
{
int subClassId = 0;
while (rdr.Read())
{
//处理大类信息,
if (subClassId != int.Parse(rdr[0].ToString()))
{
subClassId = int.Parse(rdr[0].ToString());
writerFile.WriteLine("<url>");
writerFile.WriteLine("<loc>" + "http://www.chituwang.com/Article/index.aspx?parentid=" + rdr[2].ToString() + "</loc>");
writerFile.WriteLine("<lastmod>" + DateTime.Now.ToShortDateString() + "</lastmod>");
writerFile.WriteLine("<changefreq>daily</changefreq>");
writerFile.WriteLine("<priority>0.5</priority>");
writerFile.WriteLine("</url>");
}
//处理文章信息
writerFile.WriteLine("<url>");
writerFile.WriteLine("<loc>" + "http://www.chituwang.com/Article/index.aspx?articleid=" + rdr[0].ToString() + "</loc>");
writerFile.WriteLine("<lastmod>" + DateTime.N
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于C# 网站地图制作

相关文章

  • 2018-08-20.NET Core系列之MemoryCache 缓存域
  • 2017-05-11ASP.NET 实现验证码以及刷新验证码的小例子
  • 2017-05-11asp.net判断字符串是否是中文的方法
  • 2017-05-11LINQ 标准查询操作符
  • 2017-05-11asp.net(c#)有关 Session 操作的几个误区
  • 2017-05-11关于 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。的解决方法
  • 2017-05-11.NET实现魔方游戏(一)之任意阶魔方的表示
  • 2017-05-11ASP.NET2.0中用Gridview控件操作数据的代码
  • 2017-05-11SQL注入中绕过 单引号 限制继续注入
  • 2017-05-11VS2012/VS2013本地发布网站步骤详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • HttpHandler HttpModule入门篇
    • ASP.NET MVC中异常Exception拦截的深入理解
    • 使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
    • ConfiguraionSource节点及多个配置文件的应用
    • ASP.NET MVC后台参数验证的几种方式
    • 全面剖析.Net环境下的缓存技术
    • ASP.NET MVC Bundles 用法和说明(打包javascript和css)
    • 让GridView只显示特定用户的数据的方法
    • ASP.NET MVC5网站开发文章管理架构(七)
    • 基于Asp.Net MVC4 Bundle捆绑压缩技术的介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有