A melhor maneira de lidar com um 404 em um download de arquivo HTTP manipulador?
-
03-07-2019 - |
Pergunta
Eu tenho uma grade que fornece alguns links para os usuários a baixar arquivos. Os arquivos são armazenados fora do aplicativo, as referências de caminho são lidos a partir do banco de dados e um HTTP handler (* .ashx) é usado para servir cada arquivo solicitado. É, no entanto, possível que poderia haver uma entrada de banco de dados apontando para um arquivo inexistente. I pegar o FileNotFoundException
, mas eu não tenho certeza de qual seria o melhor método para informar o usuário sobre o arquivo ausente (para que eles possam entrar em contato com o suporte).
Primeiro idéia é definir um código 404 padrão na resposta, e é isso que eu estou fazendo agora.
Uma maneira mais útil seria para exibir uma notificação (jQuery) sobre um arquivo que está faltando, mas o download do arquivo não é feito em AJAX, então isso implicaria um processo de duas etapas - uma do lado do cliente onclick manipulador chama um método de serviço web para verificar se o arquivo existe, se não, então eu cancelar o clique (false retorno) e exibir uma mensagem amigável para o usuário. Se o arquivo existir no entanto, eu prosseguir com a execução normal. Mas isso ainda acrescenta outra chamada do servidor.
Você já lidou com um problema semelhante? Como você resolvê-lo?
Alguns esclarecimentos -. A aplicação é construída em ASP.NET 2.0 e usa jQuery para chamar os métodos de serviços web
Solução
Pawel, parece que você respondeu a sua pergunta já ...
... (para que eles possam entrar em contato suporte) ...
Ao afirmar o acima eu sugiro que você criar uma página 404 personalizada que notifica o usuário do arquivo não existente no disco e fornecer-lhes informações sobre como entrar em contato com o escritório de suporte.
Eu criei um HTTP Handler para lidar com arquivos e se um arquivo não existir no disco, então eu retornar uma resposta 404. I tenha configurado o IIS para exibir uma página personalizada se um reponse 404 foi jogado .. (e eu faço o mesmo para o erro 500).
Espero que isso ajude e boa sorte em encontrar a solução que se adapta às suas necessidades!