2010-03-13 4 views
1

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

Мой Handler:

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

Благодаря

ответ

4

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

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

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

+0

Благодарим вас за ответ. Я изначально был на кодовой странице, но я прочитал сообщение в форуме, где кто-то сказал, что было бы более эффективно использовать обработчик, чтобы пользователи могли загружать их. Я предполагаю, что их сценарий должен быть другим (т. Е. Делать больше, чем просто использовать свойство response). – XSL

Смежные вопросы