Pregunta

Esto es un poco complicado y me alegraría si me pudieran dar algunos consejos sobre esto.
Esto es lo que quiero hacer:

  • Un usuario intenta acceder myapp.com/data/123456.mp3

  • test.mp3 no existe

  • El sistema envía al usuario a myapp.com/data/error.apsx?file=123456.mp3

Necesito esto para manejar la forma en que se supone que un sistema grande sirve archivos mp3.

Si un usuario intenta acceder a myapp.com/otherFolder/notHere.whatever, el sistema devuelve el error 404 estándar normalmente.

Sé que hay formas de especificar eso en IIS, pero me encantaría si hubiera algo que pudiera hacer mediante programación o simplemente dentro de mi proyecto .net.

editar:

He creado un archivo web.config en myapp.com/data/

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

Esto no parece estar funcionando.

¿Fue útil?

Solución

Errores personalizados http://aspnetresources.com/articles/CustomErrorPages.aspx

En su web.config.

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

Otros consejos

Lo primero que debe hacer es asegurarse de que ASP.NET maneje estas solicitudes de archivos ya que, de manera predeterminada, .mp3 no es una extensión ASP.NET y esto solo será manejado por IIS.

Se te ocurren un par de maneras de hacerlo una vez que lo estás manejando.

El primero es crear un HttpModule que vea el evento OnUnhandledException. Dado que ASP.NET arroja 404 (y todos los errores HTTP) como excepciones de tipo HttpException, el módulo le proporcionará un lugar para capturar, analizar la solicitud y redirigir a sus propios fines.

El otro medio es crear un web.config en el nivel de carpeta que le interesa (estos pueden estar anidados, recuerde) y crear la sección customerror allí. Esto es más sencillo pero ofrece mucho menos control. A fin de cuentas, preferiría el módulo en general.

probablemente podría poner un web.config dentro de la carpeta en la que desea colocar un error específico y poner en ese webconfig la etiqueta customerror con la página indicada o puede usar la etiqueta de ubicación dentro del web.config principal

pero no estoy seguro de esto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top