62,266
社区成员
发帖
与我相关
我的任务
分享
//全部生成html
protected void MakeHtml(object sender, EventArgs e)
{
btnMakeHtml.Enabled = false;
btnMakeHtml.Text = "生成可能需要一段时间,请耐心等待……";
common cmn = new common();
string url = "http://" + Request.ServerVariables["Http_Host"] + Request.ServerVariables["URL"];
url = url.Substring(0, url.LastIndexOf("/"));
url = url.Substring(0, url.LastIndexOf("/"));
url = url + "/template/";
string fp = Server.MapPath("manage_news.aspx");
fp = fp.Substring(0, fp.LastIndexOf("\\"));
fp = fp.Substring(0, fp.LastIndexOf("\\"));
fp = fp + "\\html\\news\\";
//生成news_list.aspx
if (!Directory.Exists(fp))
{
Directory.CreateDirectory(fp);
}
else
{
string urlList;//获取数据网址
string fpHtml;//生成文件名(含路径)
// int iPageSize = Hope_T_NewManager.GetHope_T_NewsNum();
IList<Hope_T_NewsClass> listNewsClass = Hope_T_NewsClassManager.GetAllHope_T_NewsClassesIndex();
foreach (Hope_T_NewsClass list in listNewsClass)
{
int iNewsNumByClass = Hope_T_NewManager.GetHope_T_NewsNumByNews_ClassId(list.News_ClassId);
if (iNewsNumByClass > 30)//大于一
{
int iPageSize = iNewsNumByClass / 30;
for (int i = 1; i <= iPageSize + 1; i++)
{
urlList = url + "news_list.aspx?news_classid=" + list.News_ClassId + "&page=" + i.ToString();
fpHtml = fp + "news_list" + list.News_ClassId + "_" + i.ToString() + ".html";
string sContent = cmn.GetDataFromRemoteUrl(urlList);
sContent = sContent.Replace("$firstPage$", "news_list" + list.News_ClassId + "_1.html");//首页
sContent = sContent.Replace("$prePage$", "news_list" + list.News_ClassId + "_" + (i - 1).ToString() + ".html");//上一页
sContent = sContent.Replace("$nextPage$", "news_list" + list.News_ClassId + "_" + (i + 1).ToString() + ".html");//下一页
sContent = sContent.Replace("$lastPage$", "news_list" + list.News_ClassId + "_" + (iPageSize + 1).ToString() + ".html");//尾页
IList<Hope_T_Ad> listAd = Hope_T_AdManager.GetAllAd();
foreach (Hope_T_Ad list1 in listAd)
{
sContent = sContent.Replace(list1.Ad_Label, list1.Ad_Code);
}
cmn.CreateList(sContent, true, fpHtml);
}
}
urlList = url + "news_list.aspx?news_classid=" + list.News_ClassId.ToString();
fpHtml = fp + "news_list" + list.News_ClassId + ".html";
string sContentList = cmn.GetDataFromRemoteUrl(urlList);
IList<Hope_T_Ad> listAdList = Hope_T_AdManager.GetAllAd();
foreach (Hope_T_Ad list1 in listAdList)
{
sContentList = sContentList.Replace(list1.Ad_Label, list1.Ad_Code);
}
sContentList = sContentList.Replace("$firstPage$", "news_list" + list.News_ClassId + ".html");//首页
sContentList = sContentList.Replace("$prePage$", "news_list" + list.News_ClassId + ".html");//上一页
sContentList = sContentList.Replace("$nextPage$", "news_list" + list.News_ClassId + ".html");//下一页
sContentList = sContentList.Replace("$lastPage$", "news_list" + list.News_ClassId + ".html");//尾页
cmn.CreateList(sContentList, true, fpHtml);
}
}
//生成全部news_info.aspx
IList<Hope_T_New> listNews = Hope_T_NewManager.GetAllHope_T_News();
StringBuilder sb = new StringBuilder();
foreach (Hope_T_New list in listNews)
{
string strUrl = url + "news_info.aspx?news_id=" + list.News_Id.ToString();
string strFilePath = fp + Convert.ToDateTime(list.News_PostTime.ToString()).ToShortDateString().Replace("-", "") + list.News_Id.ToString() + ".html";
string sContent = cmn.GetDataFromRemoteUrl(strUrl);
IList<Hope_T_Ad> listAd = Hope_T_AdManager.GetAllAd();
foreach (Hope_T_Ad list1 in listAd)
{
sContent = sContent.Replace(list1.Ad_Label, list1.Ad_Code);
}
if (cmn.CreateList(sContent, true, strFilePath))
{
}
}
btnMakeHtml.Text = "重新生成";
btnMakeHtml.Enabled = true;
Hope_T_Log objLog = new Hope_T_Log();
objLog.Log_Content = "生成全部文章";
objLog.Log_Time = Convert.ToDateTime(System.DateTime.Now.ToString());
objLog.Log_User = Session["HopeUser"].ToString();
Hope_T_LogManager.AddHope_T_Log(objLog);
ClientScript.RegisterStartupScript(typeof(string), "成功", "alert(\"生成成功\")", true);
public class common
{
public common()
{
}
/// <summary>
/// 接收数据流并生成html
/// </summary>
/// <param name="url">url或者数据流</param>
/// <param name="isAlreadyData">是否是数据流</param>
/// <param name="fna">生成文件</param>
/// <returns>是否成功</returns>
public bool CreateList(string url,bool isAlreadyData, string fna)
{
bool ok;
StreamWriter sw = null; //用来写文件
Encoding code = Encoding.GetEncoding("utf-8"); //定义编码
string strHtml;
if (isAlreadyData == true)
strHtml = url;
else
strHtml=CommonXMLGetData(url);
//写入文件
try
{
sw = new StreamWriter(fna, false, code);
sw.Write(strHtml);
sw.Flush();
sw.Close();
sw.Dispose();
ok = true;
}
catch (Exception ex)
{
HttpContext.Current.Response.Write("<p style=\"font-size:12px\">写入文件出错:" + ex.Message + "<a href=\"javascript:history.back()\" title=\"返回\">返回</a>");
HttpContext.Current.Response.End();
ok = false;
}
finally
{
}
return ok;
}
public string GetDataFromRemoteUrl(string url)
{
return CommonXMLGetData(url);
}
protected static string CommonXMLGetData(string url)
{
//准备生成
string strHtml;
Encoding code = Encoding.GetEncoding("utf-8"); //定义编码
StreamReader sr = null; //用来读取流
//构造web请求,发送请求,获取响应
WebRequest HttpWebRequest = null;
WebResponse HttpWebResponse = null;
HttpWebRequest = WebRequest.Create(url);
try
{
HttpWebResponse = HttpWebRequest.GetResponse();
}
catch(Exception ex)
{
HttpContext.Current.Response.Write("出错信息:" + ex.Message);
}
//获得流
sr = new StreamReader(HttpWebResponse.GetResponseStream(), code);
strHtml = sr.ReadToEnd();
sr.Close();
sr.Dispose();
return strHtml;
}