.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>
 

 posted on 2009-11-19 17:00  vingi_苍月  阅读(5088)  评论(0编辑  收藏  举报