我之前从未使用过HTTP处理程序,而且我有一个工作,但我不确定我是否真正使用它。我生成了一个字符串,将其保存为CSV文件。当用户单击按钮时,我希望打开download dialog
框,以便用户可以保存文件。我有什么工作,但我一直在阅读有关修改web.config
文件的内容,我没有那么做。
我的处理程序:
private string _data;
private string _title = "temp";
public void AddData(string data)
{
_data = data;
}
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/csv";
context.Response.AddHeader("content-disposition","filename=" + _title + ".csv");
context.Response.Write(_data);
context.Response.Flush();
context.Response.Close();
}
这是来自允许用户下载的页面: (点击按钮)
string dataToConvert = "MYCSVDATA....";
csvHandler handler = new csvHandler();
handler.AddData(dataToConvert);
handler.ProcessRequest(this.Context);
这很好用,但是没有我见过的例子实例化处理程序,似乎总是修改web.config。难道我做错了什么?
由于
答案 0 :(得分:4)
在我看来,它并没有真正使用它是一个处理程序的事实。为这个实现你并不真正使用的接口创建一个单独的类有什么好处,而不是把代码放在你现有的页面类中?你只是做了回应 - 所以为什么不在页面内做呢?
修改web.config的典型方法是因为您希望处理程序实际处理请求 - 而在您的情况下,页面正在接收请求,只是询问发生的对象是否实现处理程序接口,用于将数据转储到响应中。
特别是,这个处理程序是否可以作为正常响应的独立处理程序使用?当你在它上面调用AddData
时感觉它只会做任何有用的事情......如果你在web.config中注册,它只会响应一个空的csv文件(或可能是例外),对吧?如果是这种情况,我真的不认为它应该首先实现IHttpHandler
- 它会误导其他后来看它的开发人员。