Pergunta

Isso é um pouco complicado e eu ficaria feliz se vocês pudessem me dar algumas dicas neste.
Aqui está o que eu quero fazer:

  • Um usuário tenta acessar myapp.com/data/123456.mp3

  • test.mp3 não existe

  • O sistema envia o usuário para myapp.com/data/error.apsx?file=123456.mp3

Eu preciso disso para lidar com a maneira como um grande sistema deve servir arquivos MP3.

Se um usuário tentar acessar myapp.com/otherfder/nothere.way, o sistema retorna o erro padrão 404 normalmente.

Sei que existem maneiras de especificar isso no IIS, mas eu adoraria se houvesse algo que eu pudesse fazer programaticamente ou apenas com meu projeto .NET.

editar:

Eu criei um arquivo web.config em myapp.com/data/

<?xml version="1.0"?>
<configuration>
    <system.web>
      <customErrors mode="RemoteOnly" defaultRedirect="/data/mp3/full/serveMp3.aspx"/>
    </system.web>
</configuration>

Isso não parece estar funcionando.

Foi útil?

Solução

Erros personalizadoshttp://aspneTresources.com/articles/customerRorpages.aspx

Em seu web.config.

<customErrors
       mode="RemoteOnly" 
       defaultRedirect="~/errors/GeneralError.aspx" 
/>

Outras dicas

A primeira coisa que você precisa fazer é garantir que o ASP.NET lide com essas solicitações de arquivo, pois, por padrão, o .mp3 não é uma extensão do ASP.NET e isso será tratado pelo IIS.

Algumas maneiras de realmente fazer isso quando você estiver lidando com isso, vinha à mente.

O primeiro é criar um httpmodule que assista ao evento OnUnHandledException. Como asp.net lança 404 (e todos os erros de HTTP) como exceções do tipo HttPexception, o módulo fornecerá um local para capturar, analisar a solicitação e redirecionar para seus próprios fins.

O outro meio é criar um web.config no nível da pasta com o qual você se preocupa (eles podem ser aninhados, lembre -se) e criar uma seção CustomError lá. Isso é mais direto, mas oferece muito menos controle. Todas as coisas consideradas eu favoreceria o módulo em geral.

Provavelmente, você pode colocar um web.config Indide a pasta que deseja colocar um erro específico e colocar nessa webconfig a tag alfonarerror com a página indicada ou você pode usar a tag de localização dentro da web principal.config

Mas não tenho certeza sobre isso

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top