Вопрос

Я никогда раньше не использовал обработчики HTTP, и один из них у меня работает, но я не уверен, правильно ли я его использую.Я сгенерировал строку, которая будет сохранена в виде файла CSV.Когда пользователь нажимает кнопку, я хочу, чтобы download dialog поле, которое нужно открыть, чтобы пользователь мог сохранить файл.То, что у меня есть, работает, но я продолжаю читать об изменении web.config file, и мне не пришлось этого делать.

Мой хендлер:

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.Я делаю что-то неправильно?

Спасибо

Это было полезно?

Решение

Мне кажется, что он вообще не использует тот факт, что это обработчик.Какая польза от создания отдельного класса для реализации интерфейса, который вы на самом деле не используете, вместо того, чтобы помещать код в существующий класс страницы?Вы делаете что-то только с ответом — так почему бы просто не сделать это на странице?

Типичный подход к изменению web.config заключается в том, что вы хотите, чтобы обработчик фактически обрабатывал запрос, тогда как в вашем случае страница получает запрос и просто запрашивает объект, который случается реализовать интерфейс обработчика для вывода данных в ответ.

В частности, можно ли вообще использовать этот обработчик в качестве автономного обработчика обычного ответа?Такое ощущение, что он сделает что-нибудь полезное только тогда, когда вы позвоните AddData в теме...если вы делал зарегистрируйте его в web.config, он просто ответит пустым CSV-файлом (или, возможно, исключением), верно?Если это так, я действительно не думаю, что он должен реализовать IHttpHandler во-первых, это введет в заблуждение других разработчиков, которые посмотрят на него позже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top