HttpHandler для загрузки текстовых файлов (ASP.NET)? - PullRequest
1 голос
/ 22 сентября 2010

Привет, я создал HttpHandler для загрузки файлов с сервера. Кажется, он ничего не обрабатывает ... Я поставил точку останова в ProcessRequest, она никогда не идет туда.

public class DownloadHandler : IHttpHandler
{
   public void ProcessRequest(HttpContext context)
   {
        //download stuff and break point
   }
}

Это никогда не останавливается там, как упоминалось. Я также зарегистрировал это в web.config.

<add verb="*" path="????" type="DownloadHandler" />

Я не уверен насчет части пути этой записи. Что мне нужно туда ввести? Я загружаю текстовые файлы, но URL не содержит имя файла, мне как-то нужно передать его обработчику. Как бы я это сделал? Сессия может быть?

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Вы читали Как зарегистрировать Http Handlers ?Используете ли вы IIS 6 или 7?

Часть пути должна содержать (частичный) URL, поэтому, если в вашем случае вы используете статический URL без имен файлов, вы должны поместить его туда.Вы можете завершить URL-адрес именем несуществующего ресурса и отобразить его на путь

, например, URL-адрес http://myserver.com/pages/downloadfiles
и путь = "downloadfiles"

Если высделать POST, вы можете поместить имя файла в скрытое поле и извлечь его в обработчике.Если вы используете GET, я не уверен, либо сделайте перекрестную публикацию состояния просмотра, либо введите имя файла в сеанс, как вы сказали.

Любая причина, почему вы не можете поместить имя файла в URL?

0 голосов
/ 22 сентября 2010

Путь к обработчику должен быть тем путем, который вы пытаетесь обработать - немного тавтологии, я знаю, но это так просто.Какой бы путь на вашем сайте (реальный или, скорее, виртуальный) вы хотели бы обработать этим обработчиком.

Теперь, если только тип файла в конце этого пути обычно не обрабатывается ASP.NET (например,aspx, .asmx, но not a .txt) ASP никогда не увидит запрос, чтобы он прошел его конвейер и оказался в вашем обработчике.В этом случае вам необходимо привязать тип расширения в IIS к ASP.NET.

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

В общем, я должен спросить , почему вы используете обработчик для этого вall - .txt будет нормально работать, так что же вы хотите реализовать здесь?Там может быть лучший способ.

...