asp.net-mvc iis routing http-status-code-302

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>