关于生成静态页面

jiaoke 2007-07-18 02:42:34
我在网上找到一段程序
/// <summary>
/// 静态生成页面的方法
/// </summary>
/// <param name="strPageUrl">生成源</param>
/// <param name="strFileName">生成到</param>
public bool MakePage(string strPageUrl, string strFileName)
{
string strDir, strFilePage;
strDir = @"File/";//更新到的文件夹
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("UTF-8"));
System.Net.WebRequest wReq = System.Net.WebRequest.Create(strPageUrl);
System.Net.WebResponse wResp = wReq.GetResponse();
System.IO.Stream respStream = wResp.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("UTF-8"));
sw.Write(reader.ReadToEnd());
}
catch (Exception ex)
{
// msg.ShowMsg("'" + strFileName + "'生成出错:" + ex.Message);
return false;//生成到出错
}
finally
{
sw.Flush();
sw.Close();
sw = null;
}

return true;
}

调用:
string strUrl = HttpContext.Current.Request.Url.ToString();
if (MakePage(strUrl, "Navigate.html"))
{
Response.Redirect("File/Navigate.html");
}

但是每次执行到
System.Net.WebResponse wResp = wReq.GetResponse();
时,又会再重新调用一次,然后就出错。

错误提示:Navigate.html文件正在被另一个进程使用。

求教:要把当前页生成静态页面怎么解决。


...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaoke 2007-07-18
  • 打赏
  • 举报
回复
lz不妨换一个思路,将MakePage的调用和WebRequest的实现代码放到另一个页面的Page_Load,做2次Response.Redirect


还是不行。
sansuihub 2007-07-18
  • 打赏
  • 举报
回复
lz不妨换一个思路,将MakePage的调用和WebRequest的实现代码放到另一个页面的Page_Load,做2次Response.Redirect

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧