Лучший способ обработать файл 404 в обработчике загрузки файлов HTTP?

StackOverflow https://stackoverflow.com/questions/609706

Вопрос

У меня есть сетка, которая предоставляет пользователям ссылки на скачивание файлов. Файлы хранятся вне приложения, ссылки на пути считываются из базы данных, а обработчик HTTP (* .ashx) используется для обслуживания каждого запрошенного файла. Однако возможно, что в базе данных может быть указатель на несуществующий файл. Я ловлю FileNotFoundException , но я не уверен, что будет лучшим способом сообщить пользователю об отсутствующем файле (чтобы он мог связаться со службой поддержки).

Первая идея - установить стандартный код 404 для ответа, и это то, чем я сейчас занимаюсь.

Более полезным способом было бы отобразить уведомление (jQuery) о пропущенном файле, но загрузка файла не выполняется в AJAX, поэтому это будет включать в себя двухэтапный процесс - обработчик onclick на стороне клиента вызывает метод веб-службы чтобы проверить, существует ли файл, если нет, то я отменяю щелчок (возвращаю false) и отображаю дружественное сообщение пользователю. Однако, если файл существует, я продолжаю нормальное выполнение. Но это добавляет еще один серверный вызов.

Вы сталкивались с подобной проблемой? Как ты это решил?

Некоторые пояснения - приложение встроено в ASP.NET 2.0 и использует jQuery для вызова методов веб-службы.

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

Решение

Павел, кажется, ты уже ответил на свой вопрос ...

  

... (чтобы они могли   поддержка) ...

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

Я создал обработчик HTTP для обработки файлов, и если файл не существует на диске, я возвращаю ответ 404. Я настроил IIS для отображения пользовательской страницы, если был выдан ответ 404 .. (и я делаю то же самое для ошибки 500).

Надеюсь, это поможет, и удачи в поиске решения, которое соответствует вашим потребностям!

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