.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.HtmlControls; 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.aspx
<%@ 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> |