IIS no sirve ciertas extensiones de archivo

IIS no sirve ciertas extensiones de archivo

Tengo este extraño problema en el servidor Win 2k3 e IIS:

Iis tiene varios sitios, en uno de ellos necesito crear un subdirectorio y configurarlo como aplicación web. Me he dado cuenta de que si creo un nuevo directorio y coloco algún archivo .js/.txt en él, iis no los atenderá (IE da un error: Internet Explorer no puede mostrar la página web).

Si coloco los mismos archivos en el subdirectorio de otro sitio antiguo, se mostrarán correctamente.

Al olfatear el tráfico, he visto que respondo al estado de conexión 200 y luego interrumpo completamente cualquier conexión.

http://domain.com/test2/prova.txt

GET /test2/prova.txt HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK

Si cambio el nombre del archivo prova.txt a prova.asp, por ejemplo, se muestra sin problemas, por lo que no debería ser un problema de permisos.

Después de realizar algunas investigaciones, descubrí que puede deberse a que faltan tipos de mime, verifiqué que .txt y .js están presentes y son atendidos por aspnet_isapi.dll. Y aquí viene otra cosa extraña: si elimino el mapeo mime de las propiedades del directorio, se sirve correctamente, pero lo mismo no funciona con js.

Realmente estoy empezando a quedarme sin ideas, ¿hay alguien que tenga alguna pista?

Gracias de antemano.

Respuesta1

Yo tuve el mismo problema. IIS hace algo llamado filtrado de tipo MIME. Si no conoce el tipo MIME de una extensión de archivo específica, devuelve un error 404.

En IIS <7: Abra las propiedades del sitio (o servidor). Clickea en elEncabezado HTTPpestaña. Clickea en elTipos MIMEbotón. Agregue el tipo de archivo * con el tipo MIME "application/octet-stream".

Para IIS 7+: Abra el administrador de IIS. Haga clic en elservidoro sitio web. Haga doble clic enTipos MIMEicono de función. En el panel Acciones, haga clic enAgregar. Complete el cuadro "Extensión del nombre de archivo" con * y el cuadro Tipo MIME con "application/octet-stream".

También se puede hacer lo mismo en su archivo web.config si está creando una aplicación .NET.

Respuesta2

Dado que ha asignado esas extensiones a aspnet_isapi.dll, ahora necesita decirle a ASP.NET que las maneje. Hiciste la parte de IIS correctamente.

Es un PageHandlerFactory que debes configurar en tus httpHandlers. Encontré esta página que lo cubre en profundidad:http://aspnet.4guysfromrolla.com/articles/011404-1.aspx.

información relacionada