.NET 的WebRequest类提供了许多WEB请求功能,方便了Windows Form和Web Form对WEB的交互操作,加上Stream的操作,可以很方便的通过URL将动态页面 生成静态页面,并保存在本地或服务器 上,因为是通过URL请求,所以不存在语言和编码的限制,同时,可以适用于Windows Form和Web Form,下面柯男写了一个简单的类,来完成一些基本操作。
- StaticPage.cs
- using System;
- using System.Data;
- using System.Configuration;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.Html Controls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Xml.Linq;
- using System.Net;
- using System.IO;
- /// <summary>
- ///URL动态保存静态页面
- /// </summary>
- public class StaticPage
- {
- private string _url="";
- private WebRequest request;
- private WebResponse response;
- public StaticPage()
- {
- }
- public StaticPage(string url)
- {
- _url = url;
- }
- public string Url
- {
- get
- {
- return _url;
- }
- set
- {
- _url = value;
- }
- }
- public bool Save(string FilePath)
- {
- bool _isOk = false;
- if(_url!="")
- {
- request = WebRequest.Create(_url);
- response=request.GetResponse();
- if(File.Exists(FilePath))
- {
- File.Delete(FilePath);
- }
- StreamReader reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.Default);
- StreamWriter write = new StreamWriter(FilePath,false, System.Text.Encoding.Default);
- write.Write(reader.ReadToEnd());
- write.Flush();
- write.Close();
- write = null;
- _isOk = true;
- }
- return _isOk;
- }
- }
- cai.asp x
- <%@ Page Language="C# " %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <script. runat="server">
- private void Page_Load(object sender, EventArgs e)
- {
- }
- private void saveBtn_click(object sender, EventArgs e)
- {
- if (path.Text.ToString() != "")
- {
- StaticPage page = new StaticPage();
- page.Url = path.Text.ToString();
- string filePath = Server.MapPath("temp.html");
- if (page.Save(filePath))
- {
- Response.Redirect("temp.html");
- }
- }
- }
- </script>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title>动态生成静态页面文件</title>
- <style. type="text/css">
- input
- {
- padding:4px;
- font-size:12px;
- }
- </style>
- </head>
- <body>
- <form. id="form1" runat="server">
- <div>
- <asp:TextBox ID="path" runat="server" Width="300px"></asp:TextBox>
- <asp:Button ID="saveBtn" runat="server" Text="生成静态文件/" nClick="saveBtn_click" />
- </div>
- </form>
- </body>
- </html>