ASP.NET MVC: archivo CSS que devuelve un error 302 cuando existe
asp.net-mvc iis (2)
La redirección al método de inicio de sesión hace que parezca que esto se debe a permisos en el directorio o el archivo en lugar de una ruta MVC que lo atrapa. (Si fue capturado por una ruta MVC, probablemente resultaría en un error al determinar qué controlador y / o acción usar).
ASP.NET MVC deja archivos estáticos solo, pero si ASP.NET en general decide que el usuario anónimo no tiene acceso al archivo CSS o su directorio, ASP.NET redirigirá a la URL de inicio de sesión, que será una acción ASP.NET MVC.
Estoy recibiendo un error 302 volviendo en un único archivo CSS en un sitio ASP.NET MVC 2 en localhost esta mañana y no sé qué habría cambiado para causar esto.
El sitio localhost usa IIS 7.5, aunque he tenido una experiencia limitada con IIS, así que no he mirado demasiado a lo que podría estar pasando allí.
La URL del archivo CSS es:
http://localhost/MySite/Content/Site.css?v=16
y el encabezado de ubicación en la respuesta se ve así:
/MySite/Account/Login?ReturnUrl=%MySite%2fContent%2fSite.css%3fv%3d16&v=16
Esto me hace pensar que MVC está redireccionando el archivo estático o algo así, sin embargo, si ese fuera el caso, entonces esperaría que todas mis imágenes, CSS y archivos de JavaScript hicieran lo mismo que ellos. Por si acaso, aquí hay una versión simplificada de RegisterRoutes()
en Global.ascx:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("", "Account/{action}/", new { controller = "Account" });
routes.MapRoute("", "{action}", new { controller = "Home", action = "Index" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Error",
"{*url}",
new { controller = "Home", action = "ResourceNotFound" }
);
}
Además, si cambio el nombre de mi archivo CSS a Site2.css y hago referencia a él, sucede lo mismo.
¿Que esta pasando?
Parece que las reglas de autorización en el web.config dicen que debe estar autenticado para ver las páginas CSS. Debería poder probarlo iniciando sesión y viendo si puede hacer que el archivo CSS se sirva correctamente.
Agregaría una sección de ubicación a web.config para eliminar el requisito de autorización en el directorio de contenido. Tomado de http://support.microsoft.com/kb/316871
<!-- This section gives the unauthenticated user access to all of the files that are stored in the Content folder. -->
<location path="content">
<system.web>
<authorization>
<allow users ="*" />
</authorization>
</system.web>
</location>