.net生成静态页方法总结

简介:    第1种方法:             用server.Execute(path As String,writer As Sysetem.IO.TextWriter) 方法,这种方法很简单,向服务器放松动态网页请求,获取页面的客户端html代码,然后把内容写进文件里.这种方法写起来比较简...
      第1种方法:
            用server.Execute(path As String,writer As Sysetem.IO.TextWriter) 方法,这种方法很简单,向服务器放松动态网页请求,获取页面的客户端html代码,然后把内容写进文件里.这种方法写起来比较简单:
 1          Dim  swHtml  As  StringWriter  =  New  StringWriter()
 2         Server.Execute( " http://localhost/newsSzhome/manage/newstemplate.aspx, swHtml)
 3          Dim  strContent  As  String  =  swHtml.ToString()
 4
 5          Dim  filepath  As  String  =  " d//news//001.html "
 6          If  Not  (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(filepath)))  Then
 7             System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filepath))
 8          End  If
 9          Dim  sw  As  StreamWriter  =  New  StreamWriter(filepath,  False , System.Text.Encoding.Default)
10          Try
11             sw.Write(strContent )
12          Catch  ex  As  Exception
13              Throw  ex
14          Finally
15             sw.Flush()
16             sw.Close()
17          End  Try
   这种方法是必须读网页地址,缺点显而易见:速度慢。另外如果请求的动态页面有验证控件的话,返回的html页面却无法进行数据验证。如果在同一个项目里的程序用这个还是很好的,但是如果是要把生成程序跟网页程序分开(如写成webservice)的话,用这个方法就相当与去打开一个外网网页,效率肯定会大打折扣(而且我在webservice上用这方法根本运行不了,程序出异常!具体原因没有去探索,估计应该是权限的问题).
        
        第2种方法:
           这个方法跟第1种方法相似(也是需要读取网页内容),用System.Net.WebRequest.Create(path As String)方法建里一个需要读取的网页的webRequest,再获得它的WebResponse,再以流的形式写入文件.
            

 1Dim wReq As System.Net.WebRequest = System.Net.WebRequest.Create("http://localhost/newsSzhome/manage/newstemplate.aspx"
 2        Dim wResp As System.Net.WebResponse = wReq.GetResponse
 3        Dim srs As System.IO.Stream = wResp.GetResponseStream
 4        Dim sr As System.IO.StreamReader = New System.IO.StreamReader(srs, System.Text.Encoding.Default) 'GetEncoding("gb2312"))
 5        Dim strContent As String = sr.ReadToEnd()
 6Dim filepath As String = "d://news//0001.html"
 7        If Not (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(filepath))) Then
 8            System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filepath))
 9        End If
10        Dim sw As StreamWriter = New StreamWriter(filepath, False, System.Text.Encoding.Default)
11        Try
12            sw.Write(temp)
13        Catch ex as Exception
14            Throw ex
15        Finally
16            sw.Flush()
17            sw.Close()
18        End Try
            效果就不多说了,跟第1种方法问题一样!(但是我在webservice中用上面这个方法生成时还是可以成功的,但是速度慢很多.)        

  第3种,就是最常用也最实用的字符替代方法String.Replace(),从文件读取模版,替换模版中的参数后输出文件,这种方法的生成速度上比第一种要快许多,而且模版内容可以用工具任意编辑
主要代码:

 1   Dim sr As New System.IO.StreamReader("d://newsDetail_template.htm", System.Text.Encoding.Default)
 2        Dim temp As String = sr.ReadToEnd()
 3        temp = temp.Replace("@$_CREATEDATE_$@", DateTime.Now.ToString)
 4  Dim filepath As String = "d://news//001.html"
 5        If Not (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(filepath))) Then
 6            System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filepath))
 7        End If
 8        Dim sw As StreamWriter = New StreamWriter(filepath, False, System.Text.Encoding.Default)
 9        Try
10            sw.Write(temp)
11        Catch
12            Return false
13        Finally
14            sw.Flush()
15            sw.Close()
16        End Try
            这个方法读取的是硬盘里的纯文件类型,在程序后台查询数据去替换掉模板文件里的特定字符.
目录
相关文章
|
API 网络安全 数据安全/隐私保护
.NET邮箱API发送邮件的方法有哪些
本文介绍了.NET开发中使用邮箱API发送邮件的方法,包括SmtpClient类发送邮件、MailMessage类创建邮件消息、设置SmtpClient属性、同步/异步发送、错误处理、发送HTML格式邮件、带附件邮件以及多人邮件。AokSend提供高触达发信服务,适用于大规模验证码发送场景。了解这些技巧有助于开发者实现高效、可靠的邮件功能。
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
162 0
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
29天前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
434 2
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
162 0
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
9173 0
|
Java
已解决Java.net.MalformedURLException异常的有效方法java.net.MalformedURLException: no protocol异常处理
已解决Java.net.MalformedURLException异常的有效方法java.net.MalformedURLException: no protocol异常处理
891 0
|
算法 API 数据安全/隐私保护
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
130 0
.NET使用原生方法实现文件压缩和解压
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
302 0
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
151 0

热门文章

最新文章