[[高手答疑]] .NET 新闻发布系统生成静态页面的实例

[复制链接]
查看: 68|回复: 0
发表于 2024-9-15 00:56:35 | 显示全部楼层 | 阅读模式
易博V9下载

经常看到网上的许多CMS系统和新闻发布系统都会在内容发布后生成一个静态页面,这样有助于搜索引擎的收录。因此,思考是否可以在.NET中实现类似的机制。在网上搜索了一些资料后发现,已经有前辈们提供了实现的例子,在此引用一下他们的做法:

主要做法如下:

1. 创建网站,并创建一个模板页 template.htm

2. 添加一个Web窗体 Default.aspx

3. 在网站下新建文件夹 htm,设置该文件夹的属性,确保该文件夹具有可写权限。

详细代码:

1. template.htm:使用 $title$$content$ 进行内容替换,类似于 ASP 等生成模板的方式。

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>$title$生成静态页</title>
  5. <style type="text/css">
  6. <!--.STYLE1 {font-size: 16px;font-weight: bold;}-->
  7. </style>
  8. </head>
  9. <body>
  10. <br/>
  11. <br/>
  12. <table width="100%" border="0" bgcolor="#339900">
  13. <tr>
  14. <td height="34" align="center" bgcolor="#FFFFFF"><span>&nbsp;</span></td>
  15. </tr>
  16. <tr>
  17. <td height="42" bgcolor="#FFFFFF"><br/>
  18. <br/>
  19. 内容:$content[ DISCUZ_CODE_0 ]nbsp;</td>
  20. </tr>
  21. </table>
  22. </body>
  23. </html>
复制代码

2. Default.aspx:生成模板文件名可以自动或是根据定义。

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title>Asp.net生成静态页的两个例子</title>
  6. </head>
  7. <body>
  8. <form id="form1" runat="server">
  9. <div>
  10. 标题:<asp:TextBox ID="txtTitle" runat="server" Width="352px"></asp:TextBox><br/>
  11. 内容:<asp:TextBox ID="txtContent" runat="server" Height="179px" TextMode="MultiLine" Width="350px"></asp:TextBox><br/>
  12. <br/>
  13. <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="根据模板生成" /><br/>
  14. <br/>
  15. <br/>
  16. Url地址:<asp:TextBox ID="txtUrl" runat="server" ToolTip="请确认Url地址的存在" Width="359px"></asp:TextBox><br/>
  17. <br/>
  18. <asp:Button ID="Button2" runat="server" Text="根据Url地址生成" OnClick="Button2_Click" />
  19. </div>
  20. </form>
  21. </body>
  22. </html>
复制代码

3. 后台代码 Default.aspx.cs

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using System.Net;
  12. using System.Text;
  13. using System.IO;
  14. public partial class Default : System.Web.UI.Page
  15. {
  16. protected void Page_Load(object sender, EventArgs e)
  17. {
  18. }
  19. // 根据模板生成,保持在html文件夹中
  20. protected void Button1_Click(object sender, EventArgs e)
  21. {
  22. string mbPath = Server.MapPath("template.htm");
  23. Encoding code = Encoding.GetEncoding("gb2312");
  24. StreamReader sr = null;
  25. StreamWriter sw = null;
  26. string str = null;
  27. // 读取
  28. try
  29. {
  30. sr = new StreamReader(mbPath, code);
  31. str = sr.ReadToEnd();
  32. }
  33. catch (Exception ex)
  34. {
  35. throw ex;
  36. }
  37. finally
  38. {
  39. sr.Close();
  40. }
  41. // 根据时间自动重命名,扩展名也可以自行修改
  42. string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm";
  43. str = str.Replace("$title$", txtTitle.Text); // 替换Title
  44. str = str.Replace("$content$", txtContent.Text); // 替换content
  45. // 生成静态文件
  46. try
  47. {
  48. sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code);
  49. sw.Write(str);
  50. sw.Flush();
  51. }
  52. catch (Exception ex)
  53. {
  54. throw ex;
  55. }
  56. finally
  57. {
  58. sw.Close();
  59. Response.Write("恭喜<a href="htm/" + fileName + "" target="_blank">" + fileName + "</a>已经生成,保存在htm文件夹下!");
  60. }
  61. }
  62. // 根据Url地址生成静态页保持
  63. protected void Button2_Click(object sender, EventArgs e)
  64. {
  65. Encoding code = Encoding.GetEncoding("utf-8");
  66. StreamReader sr = null;
  67. StreamWriter sw = null;
  68. string str = null;
  69. // 读取远程路径
  70. WebRequest temp = WebRequest.Create(txtUrl.Text.Trim());
  71. WebResponse myTemp = temp.GetResponse();
  72. sr = new StreamReader(myTemp.GetResponseStream(), code);
  73. // 读取
  74. try
  75. {
  76. sr = new StreamReader(myTemp.GetResponseStream(), code);
  77. str = sr.ReadToEnd();
  78. }
  79. catch (Exception ex)
  80. {
  81. throw ex;
  82. }
  83. finally
  84. {
  85. sr.Close();
  86. }
  87. string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm";
  88. // 写入
  89. try
  90. {
  91. sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code);
  92. sw.Write(str);
  93. sw.Flush();
  94. }
  95. catch (Exception ex)
  96. {
  97. throw ex;
  98. }
  99. finally
  100. {
  101. sw.Close();
  102. Response.Write("恭喜<a href="htm/" + fileName + "" target="_blank">" + fileName + "</a>已经生成,保存在htm文件夹下!");
  103. }
  104. }
  105. }
复制代码

此代码已经测试通过。

生成静态页面可以根据时间来命名,也可以根据Url地址生成。

易博软件介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表