将数据集传递给通用处理程序(ASHX)



如何将数据集传递给通用处理程序?我不想使用会话或ViewState来做到这一点。

我正在尝试返回从输入数据集转换为响应的Excel文件。

我已经将数据集内容显示为一个报表中的一个网格,该网格被用户设置的某些标准过滤。由于查询很昂贵,因此我也不想在处理程序中执行相同的操作。

如果我可以通过参考处理程序传递数据集会更好?

您无法通过它,您需要缓存结果

您不想使用会话的原因吗?

我找不到将数据集传递到ASHX的方法,而不是创建已处理类的对象并分配给它。然后我称该对象的processRequest方法。它运行良好,构建成功。但是,当我尝试发布网站时,该代码出现了错误的错误。代码就像以下所述。

//this is working fine in VS (build succeeded and ProcessRequest returned the file!) 
//but didn't compile only on publishing
MyHandler handlerObj = new myHandler();
handlerObj.DataSource = myDataset;
handlerobj.ProcessRequest(Context);

我通过用一种接受上下文和数据集的方法替换通用处理程序来解决问题。然后,我在班级中调用了该方法,在该方法中,我将文件流写入上下文。回答,效果很好。该类的执行方式与处理程序相同,无需从IHTTPContext

继承
public void ProcessDownload(HttpContext context, DataSet DataSource)
{
    context.Response.Clear();
    context.Response.ContentType = "application/vnd.ms-excel";
    MemoryStream file = getExcelMemStream(DataSource);
    context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "myFile.xls"));
    context.Response.BinaryWrite(file.GetBuffer());
    context.Response.End();
}

相关内容