目录是这样的:Manage(文件夹)
  |-----AddInfo.aspx
Info(文件夹)
  |-----Show.aspxAddInfo.aspx页面是添加信息页面,Show.aspx页面是根据url中id参数来显示信息。
目前的做法是,在添加完信息后,用Server.Execute方法访问Show.aspx页面,生成静态页面,但是报错,错误信息为“为 ../Info/Show.aspx 执行子请求时出错。”生成静态页代码如下://添加信息操作,此处略。
//生成静态页
StringWriter writer = new StringWriter();
string url = "../Info/Show.aspx?id=12";   //此处url写死,做测试用
HttpContext.Current.Server.Execute(url, writer,true); //此处报错,“为 ../Info/Show.aspx 执行子请求时出错。”
File.WriteAllText(@"D:\static\1.html",HttpUtility.HtmlEncode(writer.ToString()));
writer.Close();
writer.Dispose();
网上没找到相关资料,谢谢了。

解决方案 »

  1.   

    public static bool WriteFile(string strText,string strContent,string strAuthor)
      {
       string path = HttpContext.Current.Server.MapPath("/news/");
       Encoding code = Encoding.GetEncoding("gb2312");
       // 读取模板文件
       string temp = HttpContext.Current.Server.MapPath("/news/text.html");
       StreamReader sr=null;
       StreamWriter sw=null;
       string str=""; 
       try
       {
        sr = new StreamReader(temp, code);
        str = sr.ReadToEnd(); // 读取文件
       }
       catch(Exception exp)
       {
        HttpContext.Current.Response.Write(exp.Message);
        HttpContext.Current.Response.End();
        sr.Close();
       }
       string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
       // 替换内容
       // 这时,模板文件已经读入到名称为str的变量中了
       str =str.Replace("ShowArticle",strText); //模板页中的ShowArticle
       str = str.Replace("biaoti",strText);
       str = str.Replace("content",strContent);
       str = str.Replace("author",strAuthor);
       // 写文件
       try
       {
        sw = new StreamWriter(path + htmlfilename , false, code);
        sw.Write(str);
        sw.Flush();
       }
       catch(Exception ex)
       {
        HttpContext.Current.Response.Write(ex.Message);
        HttpContext.Current.Response.End();
       }
       finally
       {
        sw.Close();
       }
       return true;此函数放在Conn.CS基类中了在添加新闻的代码中引用 注:工程名为Hover    if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))
        {
         Response.Write("添加成功");
        }
        else
        {
         Response.Write("生成HTML出错!");
        }
      

  2.   

    Execute 不能执行 上级目录内容 只能执行向下的目录啊 哥