日期:2014-05-17  浏览次数:20434 次

求高手改造这几句HttpContext代码
/// <summary>
///哪个页面想静态化,就继承这个类
/// </summary>
public class HtmlPage : BasePage
{
  // <summary>
  /// 获取物理路径,判断文件夹中有没有存在这个文件
  /// 不存在的话,就会调用FilterStream类进行创建,并写入内容
  /// 存在的话,就直接显示页面
  /// </summary>
  public override void ProcessRequest(HttpContext context)
  {
  HttpRequest req = context.Request;
  HttpResponse resp = context.Response;

  string htmlPage = UrlMapping.AspxToHtml(req.RawUrl);
  string htmlFile = context.Server.MapPath(htmlPage);

  if (File.Exists(htmlFile))
  {
  resp.Redirect(htmlPage);
  return;
  }

  // Html 页面不存在
  resp.Filter = new FilterStream(resp.Filter, htmlFile);
  base.ProcessRequest(context);
  }
}
--------------------------
以上代码是原本是哪个页面想静态化,就继承这个类,只要从浏览器打开那个页面的网址就创建生成静态页面了。
可我现在不想从浏览器中输入网址,而是想实现从页面输入框中提交某个网址,就创建相应的静态页面,请问如何改这段代码呢,这样我想就能用循环一次性生成很多的静态页面,而不用一个个的生成了。请大家指点一下,我看的这个源代码教程是这个页面上的http://www.cnblogs.com/tonycall/archive/2009/07/18/1526079.html,不知道怎么样哦
我自己用WebRequest改造了一下,没改成功,以下是我改造的代码

自己还是没搞定,请大家帮我用WebRequest改造一下啊,下面是我自己改的,没改出来
protected void Button1_Click(object sender, EventArgs e)
  {
  HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(TextBox1.Text);
  req.Method = "POST";
  req.ContentType = "application/x-www-form-urlencoded";

  string htmlPage = UrlMapping.AspxToHtml(req.RequestUri.ToString());
  string htmlFile = Server.MapPath(htmlPage);

  if (File.Exists(htmlFile))
  {
  return;
  }
  // Html 页面不存在
  WebResponse wr=req.GetResponse();
  这里不会了,请大家帮我弄弄应该怎么弄啊????
  } 


------解决方案--------------------
C# code

WebRequest req = HttpWebRequest.Create("http://www.baidu.com");
            req.Method = "GET";
            req.Credentials = CredentialCache.DefaultCredentials;
            req.ContentType = "application/x-www-form-urlencoded";
            HttpWebResponse wr = (HttpWebResponse)req.GetResponse();
            using (Stream stream = wr.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream, Encoding.Default))
                {
                    string s1 = reader.ReadToEnd();
                    
                    wr.Close();
                    Response.Write(s1);   //这里把s1写入到你新建的html里面就行了
                    Response.End();
                }
            }