Лучший способ обработать файл 404 в обработчике загрузки файлов HTTP?
-
03-07-2019 - |
Вопрос
У меня есть сетка, которая предоставляет пользователям ссылки на скачивание файлов. Файлы хранятся вне приложения, ссылки на пути считываются из базы данных, а обработчик HTTP (* .ashx) используется для обслуживания каждого запрошенного файла. Однако возможно, что в базе данных может быть указатель на несуществующий файл. Я ловлю FileNotFoundException
, но я не уверен, что будет лучшим способом сообщить пользователю об отсутствующем файле (чтобы он мог связаться со службой поддержки).
Первая идея - установить стандартный код 404 для ответа, и это то, чем я сейчас занимаюсь.
Более полезным способом было бы отобразить уведомление (jQuery) о пропущенном файле, но загрузка файла не выполняется в AJAX, поэтому это будет включать в себя двухэтапный процесс - обработчик onclick на стороне клиента вызывает метод веб-службы чтобы проверить, существует ли файл, если нет, то я отменяю щелчок (возвращаю false) и отображаю дружественное сообщение пользователю. Однако, если файл существует, я продолжаю нормальное выполнение. Но это добавляет еще один серверный вызов.
Вы сталкивались с подобной проблемой? Как ты это решил?
Некоторые пояснения - приложение встроено в ASP.NET 2.0 и использует jQuery для вызова методов веб-службы.
Решение
Павел, кажется, ты уже ответил на свой вопрос ...
... (чтобы они могли поддержка) ...
С учетом вышесказанного я бы предложил вам создать пользовательскую страницу 404, которая уведомляет пользователя о файле, которого нет на диске, и предоставляет ему информацию о том, как связаться с отделом поддержки.
Я создал обработчик HTTP для обработки файлов, и если файл не существует на диске, я возвращаю ответ 404. Я настроил IIS для отображения пользовательской страницы, если был выдан ответ 404 .. (и я делаю то же самое для ошибки 500).
Надеюсь, это поможет, и удачи в поиске решения, которое соответствует вашим потребностям!