前段时间做了个.net winservice生成静态页面,生成静态页面的方式有很多,这里根据需要采用的是使用动态页面直接生成静态页面的方法。下面是代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using System.Text; using System.IO; using System.Net; using System.Configuration; namespace HtmlCreator { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); this.eventLog1 = new EventLog(); if (!System.Diagnostics.EventLog.SourceExists("InfoSource")) { System.Diagnostics.EventLog.CreateEventSource("InfoSource", "InfoEventLog"); } this.eventLog1.Source = "InfoSource"; } protected override void OnStart(string[] args) { // TODO: 在此处添加代码以启动服务。 timer1.Start(); } protected override void OnStop() { // TODO: 在此处添加代码以执行停止服务所需的关闭操作。 timer1.Stop(); } private void doCreateHtml() { try { this.eventLog1.WriteEntry(string.Format("于{0}开始生成静态页面", DateTime.Now), EventLogEntryType.Information); string dynamicPage = ConfigurationManager.AppSettings["dypagepath"].ToString();//动态页面url地址 string htmlpath = ConfigurationManager.AppSettings["htmpath"].ToString();//静态页面服务器地址 htmlpath += "index.html"; WebRequest webRequest = WebRequest.Create(dynamicPage); WebResponse webResponse = webRequest.GetResponse(); StreamReader sr = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312")); string strHtml = sr.ReadToEnd(); using (FileStream fs = new FileStream(htmlpath, FileMode.Create, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"))) { sw.WriteLine(strHtml); sw.Flush(); } } webResponse.Close(); this.eventLog1.WriteEntry(string.Format("于{0}生成静态页面成功", DateTime.Now), EventLogEntryType.Information); } catch (Exception ex) { this.eventLog1.WriteEntry(string.Format("于{0}生成静态页面时出错,错误原因:{1}", DateTime.Now,ex.Message), EventLogEntryType.Error); } } private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { this.timer1.Stop(); doCreateHtml(); this.timer1.Start(); } } }