动态页面生成静态页面

本文介绍四种常见的网页静态化生成方法,包括重写Render方法、使用WebClient类、自定义静态生成页面方法等,适用于不同场景需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以把这段代码放在page-load前面

第一种方法:重写Render方法,生成静态文件

 protected override void Render(HtmlTextWriter writer)//
    {
        StringWriter html 
= new StringWriter();
        HtmlTextWriter tw 
= new HtmlTextWriter(html);
        
base.Render(tw);
        StreamWriter sw 
= new StreamWriter(Server.MapPath("default.html"), false, System.Text.Encoding.Default);
        sw.Write(html.ToString());
        sw.Close();
        tw.Close();
        Response.Write(html.ToString());
    }
 

将生成相应网页的静态页面,不过必须先调试一下才能生成default.html,生成不同的可更改 ....html,我就比较用这种

第二种方法:利用WebClient类实现

    /// <summary>
    
/// 得到指定url的源代码,放到指定的路径下
    
/// </summary>
    
/// <param name="strURL">url地址</param>
    
/// <param name="strDesPath">生成html文件目标路径</param>

    private void getHTML(string strURL, string strDesPath)
    
{
        WebRequest request 
= WebRequest.Create(strURL);
        WebResponse response 
= request.GetResponse();
        Stream resStream 
= response.GetResponseStream();
        StreamReader sr 
= new StreamReader(resStream);
        StreamWriter sw 
= new StreamWriter(strDesPath, false, System.Text.Encoding.Default);
        sw.Write(sr.ReadToEnd());
        resStream.Close();
        sr.Close();
        sw.Close();
    }
 

利用第二种方法。写个windows服务程序,开机自动运行,每隔指定时间自动生成首页。这样就可以实现动态首页的定时静态更新了,而且完全自动不必手工处理。

第三种方法: 

    /// <summary>
    
/// 静态生成页面的方法
    
/// </summary>
    
/// <param name='strPageUrl'>生成源</param>
    
/// <param name='strFileName'>生成到</param>

    private bool MakePage(string strPageUrl, string strFileName)
    
{
        
string strDir, strFilePage;
        strDir 
= @"/htm/MakePage/";//更新到的文件夹
        strFilePage = Server.MapPath(strDir + strFileName);

        StreamWriter sw 
= null;
        
//获得aspx的静态html
        try
        
{
            
if (!Directory.Exists(Server.MapPath(strDir)))
            
{
                Directory.CreateDirectory(Server.MapPath(strDir));
            }

            
if (File.Exists(strFilePage))
            
{
                File.Delete(strFilePage);
            }

            sw 
= new StreamWriter(strFilePage, false, System.Text.Encoding.GetEncoding("GB2312"));
            Server.Execute(strPageUrl, sw);
        }

        
catch (Exception ex)
        
{
            
return false;//生成到出错
        }

        
finally
        
{
            sw.Flush();
            sw.Close();
            sw 
= null;
        }

        
return true;
    }

第四种方法:

  /**//// <summary>
        
/// 静态生成页面的方法
        
/// </summary>
        
/// <param name='strPageUrl'>生成源</param>
        
/// <param name='strFileName'>生成到</param>

        private bool MakePage(string strPageUrl,string strFileName)
        
{
            
string strDir,strFilePage;
            strDir 
= @'/htm/MakePage/';//更新到的文件夹
            strFilePage = Server.MapPath(strDir+strFileName); 

            StreamWriter sw
=null;
            
//获得aspx的静态html
            try
            
{
                
if (!Directory.Exists(Server.MapPath(strDir)))
                
{
                    Directory.CreateDirectory(Server.MapPath(strDir));
                }

                
if(File.Exists(strFilePage))
                
{
                    File.Delete(strFilePage);
                }

                sw 
= new StreamWriter(strFilePage, false, System.Text.Encoding.GetEncoding('GB2312'));
                Server.Execute(strPageUrl,sw);
            }

            
catch(Exception ex)
            
{
                msg.ShowMsg(
'''+strFileName+''生成出错:'+ex.Message);
                
return false;//生成到出错
            }

            
finally
            
{
                sw.Flush();
                sw.Close();
                sw 
= null;
            }
 

            
return true;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值