以下為實現代碼:
/// <summary>
/// 將檔案儲存為
/// </summary>
/// <param name="uri">請求的地址</param>
/// <param name="queryString">查詢字串</param>
/// <param name="targetFilePath">儲存的檔案路徑</param>
public static void SavePage(System.Uri uri, string queryString, string targetFilePath)
{
//用於儲存檔案的流
System.IO.FileStream stream = null;
//用於儲存寫入隊對象
System.IO.TextWriter writer = null;
try
{
//建立Http請求
HttpRequest request = new HttpRequest(uri.AbsolutePath, uri.AbsoluteUri, queryString);
//建立儲存的檔案流
stream = new System.IO.FileStream(targetFilePath, System.IO.FileMode.Create);
//建立檔案寫入對象
writer = new System.IO.StreamWriter(stream, System.Text.UTF8Encoding.UTF8);
//建立Http反饋
HttpResponse Response = new HttpResponse(writer);
//建立Http上下文
HttpContext context = new HttpContext(request, Response);
//添加Session
context.Items.Add("AspSession", HttpContext.Current.Session);
//建立頁面分析器
System.Web.IHttpHandler handler = System.Web.UI.PageParser.GetCompiledPageInstance(uri.AbsolutePath,
HttpContext.Current.Server.MapPath(uri.AbsolutePath), context);
//執行請求
handler.ProcessRequest(context);
//寫入資訊
writer.Flush();
//關閉
writer.Close();
}
finally
{
//關閉寫入器
if (null != writer)
{
writer.Dispose();
}
//關閉流
if (null != stream)
{
//關閉
stream.Dispose();
}
}
}
需要注意的是Session的傳遞,如果不傳遞Session,那麼與Session相關的資料就無法獲得了。