c# - 我是否以错误的方式使用处理程序?

标签 c# asp.net ihttphandler ashx handlers

我以前从未使用过 HTTP 处理程序,我已经使用了一个,但我不确定我是否真的正确使用了它。我生成了一个字符串,该字符串将保存为 CSV 文件。当用户单击按钮时,我希望打开下载对话框 框,以便用户可以保存文件。我的工作有效,但我一直在阅读有关修改 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 的示例。难道我做错了什么?

谢谢

最佳答案

在我看来,它根本没有真正利用它是处理程序这一事实。为实现您并不真正使用的接口(interface)创建一个单独的类而不是将代码放在现有页面类中有什么好处?您只是对响应做一些事情 - 那么为什么不直接在页面内做呢?

修改 web.config 的典型方法是因为您希望处理程序实际处理请求 - 而在您的情况下,页面正在接收请求,并且只是询问发生实现的对象将数据转储到响应中的处理程序接口(interface)。

特别是,这个处理程序是否可以用作正常响应的独立处理程序?感觉它只会在您调用 AddData 时做任何有用的事情...如果您确实在 web.config 中注册它,它只会响应一个空的 csv 文件(或者可能是一个异常(exception)),对吗?如果是这样的话,我真的不认为它应该首先实现 IHttpHandler - 它会误导以后查看它的其他开发人员。

关于c# - 我是否以错误的方式使用处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440014/

相关文章:

c# - 如何使用c#通过USB连接仪器

c# - 如何在C#中找到文件的扩展名?

c# - 在 ASP.NET/C# 页面的回发中调用 Javascript/JQuery 函数

c# - 在 IIS Express 或其他 WebServer 上部署 ASP.NET MVC 应用程序?

html - 在单元格内设置表格高度

c# - 使用 IHttpAsyncHandler 高效转发 HTTP 请求

c# - 重构此代码以更好地利用 CSharpFunctionalExtensions 库

c# - 流式传输大型视频文件 .net

c# - 为什么 List<T>.Enumerator 比我的实现更快?