以下为实现代码:
/// <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相关的数据就无法获得了。
/// <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相关的数据就无法获得了。