使用
 string cstr=this.getUrltoHtml(url);
                    this.WriteFile(cstr,name);
                     Response.Write("ok");
调用函数
函数:
//得到指定url页面的源码
  public string getUrltoHtml(string Url)
  {
  string str = string.Empty;

  try
  {
  WebRequest wReq = WebRequest.Create(Url);
  WebResponse wResp = wReq.GetResponse();
  Stream respStream  = wResp.GetResponseStream();
  StreamReader reader = new StreamReader(respStream, code);
  str = reader.ReadToEnd();   }
  catch//(Exception ex)
  {
   Response.Write("no1");
  }
  return str;
  } //写文件
  public bool WriteFile(string str, string OutFile ) 
  {   StreamWriter sw = null;
   

  string Head = string.Empty;
  // 写文件
  try
  {
  if ( str.Length > 0 )
  {
  sw = new StreamWriter(OutFile , false, code);
  sw.Write( str);
  sw.Flush();
  }
  }
  catch
  {
 Response.Write("no2");
  }
  finally
  {
  if ( sw != null )
  sw.Close();
  }
  return true;
  }
但是调试时,没有提示任何错误,也无法生成html。运行后,"ok"能正常输出
请问什么原因,要如何改啊

解决方案 »

  1.   

    getUrltoHtml()方法改成
    public string getUrltoHtml(string Url)
      {
      string str = string.Empty;  try
      {
      WebRequest wReq = WebRequest.Create(Url);
      WebResponse wResp = wReq.GetResponse();
      Stream respStream  = wResp.GetResponseStream();
      StreamReader reader = new StreamReader(respStream, code);
      str = reader.ReadToEnd();
      return str;
      }
      catch//(Exception ex)
      {
       Response.Write("no1");
      }
      return "";
      }
      

  2.   

    WriteFile()方法改成
    public bool WriteFile(string str, string OutFile ) 
      {  StreamWriter sw = null;
         string Head = string.Empty;
      // 写文件
      try
      {
      if ( str.Length > 0 )
      {
      sw = new StreamWriter(OutFile , false, code);
      sw.Write( str);
      sw.Flush();
      }
      return true;
      }
      catch
      {
     Response.Write("no2");
      }
      finally
      {
      if ( sw != null )
      sw.Close();
      }
      return false;
      }
      

  3.   

    string cstr=this.getUrltoHtml(url);
    this.WriteFile(cstr,name);
    Response.Write("ok");
    改成:
    if(WriteFile(getUrltoHtml("http://www.sina.com"),"E:\\net_test\\test\\sina.htm"))
    {
    Response.Write("ok");
    }
    把他放在Page_Load事件里就可以了,你的问题在于变量都没给值,url和name.
    试试看。
      

  4.   

    还是不行啊我把代码传上来了,大家帮帮忙http://study.php2h.com/tohtml.aspx.rar
      

  5.   

    i++;
    n++;
    你的程序在上面i和n的值是相等的,所以不可能执行下面的:
    for (i=0;i<n;i++)
    改成
    for(int j=0;j<n;j++)
      

  6.   

    Select ClassID From [class] WHERE [UpID]=1 
    如果上面的语句取不到值的时候,也是不能执行下面的代码:
    for (i=0;i<n;i++)这可能是原因所在
      

  7.   

    可以的。其中url和name的值可以取到的,转行后在页面上显示的值和和数据库中的对过的,没错
      

  8.   

    问题解决了,是写文件时OutFile字段的地址没写完整但还有个问题。原先datalist的边框是1px的,在生成html文件后,就成了1了边框粗了很多,如何解决????
      

  9.   

    给你个现成的代码:    Public Function GetPage(ByVal url As String, ByRef postPara As String, ByVal hasCookie As Boolean, Optional ByRef encType As String = "GB2312", Optional ByRef refer As String = "") As String
            If (url.StartsWith("http://") = False) Then
                url = "http://" & url
            End If
            Dim hRqst As HttpWebRequest = HttpWebRequest.Create(url)        hRqst.ContentType = "application/x-www-form-urlencoded"
            hRqst.Headers.Add("Accept-Language", "zh-cn")
            Dim streamData As Stream
            Dim bt() As Byte
            If (postPara = "") Then
                hRqst.Method = "GET"
            Else
                hRqst.Method = "POST"
                hRqst.AllowWriteStreamBuffering = True
                bt = System.Text.Encoding.ASCII.GetBytes(postPara)
                hRqst.ContentLength = bt.Length
                hRqst.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
                hRqst.Referer = refer
                hRqst.KeepAlive = False
                hRqst.Timeout = 20000
                streamData = hRqst.GetRequestStream()
                streamData.Write(bt, 0, bt.Length)
                streamData.Close()
            End If
            Dim hRsp As HttpWebResponse
            hRsp = hRqst.GetResponse()
            streamData = hRsp.GetResponseStream()
            If (encType = "") Then
                encType = "GB2312"
            End If
            Dim readStream As New IO.StreamReader(streamData, System.Text.Encoding.GetEncoding(encType))
            GetPage = readStream.ReadToEnd()
            streamData.Close()
        End Function然后把这个方法放在你想要触发的地方就可以了
      

  10.   

    补充一下:
    里面的那个参数url就是你想要把他生成html的那个界面
      

  11.   

    "http://localhost/go369/list.aspx?ClassID="+str2.GetValue(0).ToString()+"&UpID="+ClID[i].ToString();
    如果上面给的地址是错误的话,他也是不能生成静态也面的。
    所以建议楼主单步调试看看到底是那里出了问题。