libonetID:libonet
8656次访问,排名11936(3)好友0人,关注者0
libonet的文章
原创 10 篇
翻译 0 篇
转载 2 篇
评论 1 篇
最近评论
jzcnnn:支持,,
希望能一直更新这个list
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 ASP.NET生成静态页面实现方法收藏

    新一篇: c#常用函数和方法集 | 旧一篇: Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法

    <!--Main.Aspx-->
    <%@ page language="C#" %>
    <%@ import namespace=System.IO %>
    <script runat="server">
    protected override void OnInit (EventArgs e)
    {
      
    int id;
      
    try
      
    {
        id 
    = int.Parse (Request.QueryString["id"]);
      }

      
    catch
      
    {
        
    throw (new Exception ("页面没有指定id"));
      }

      
      
    string filename=Server.MapPath("statichtml_"+id+".html");
      
      
    //尝试读取已有文件
      Stream s = GetFileStream (filename);
      
    if (s != null)//如果文件存在并且读取成功
      {
        
    using (s)
        
    {
          Stream2Stream (s, Response.OutputStream);
          Response.End ();
        }

      }

      
      
      
    //调用Main_Execute,并且获取其输出
      StringWriter sw = new StringWriter ();
      Server.Execute (
    "Main_Execute.aspx", sw);
      
      
    string content = sw.ToString ();
      
      
    //输出到客户端
      Response.Write(content);
      Response.Flush();
      
      
    //写进文件
      
      
    try
      
    {
        
    using (FileStream fs = new FileStream (filename, FileMode.Create, FileAccess.Write, FileShare.Write))
        
    {
          
    using (StreamWriter streamwriter = new StreamWriter (fs, Response.ContentEncoding))
          
    {
            streamwriter.Write (content);
          }

        }

      }

      
    finally
      
    {
        
    //Response.End ();
      }

    }

    static public void Stream2Stream (Stream src, Stream dst)
    {
      
    byte[] buf = new byte[4096];
      
    while (true)
      
    {
        
    int c = src.Read (buf, 0, buf.Length);
        
    if(c==0)
          
    return;
        dst.Write (buf, 
    0, c);
      }

    }

    public Stream GetFileStream(string filename)
    {
      
    try
      
    {
        DateTime dt 
    = File.GetLastWriteTime (filename);
        TimeSpan ts
    =dt - DateTime.Now;
        
    if(ts.TotalHours>1)
          
    return null;    //1小时后过期
        return new FileStream (filename, FileMode.Open, FileAccess.Read, FileShare.Read);
      }

      
    catch
      
    {
        
    return null;
      }

    }

    </script> 


    <!--Main_Execute.aspx-->
    <%@ page language="C#" %>
    <html>
    <head runat="server">
      
    <title>Untitled Page</title>
    </head>
    <body>

    ID:
    <%=Request.QueryString["id"]%>

    </body>
    </html>

    发表于 @ 2007年01月16日 02:07:00|评论(loading...)|编辑

    新一篇: c#常用函数和方法集 | 旧一篇: Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © libonet