ASP.NET MVC: CSS-файл, возвращающий ошибку 302, когда она существует

Я получаю ошибку 302, возвращающуюся в одном файле CSS на ASP.NET сайт MVC 2 в localhost сегодня утром, и я не знаю, что бы изменилось, чтобы вызвать это.

сайт localhost использует IIS 7.5, хотя у меня был ограниченный опыт работы с IIS, поэтому я не смотрел на то, что может там происходить.

URL-адрес файла CSS:

http://localhost/MySite/Content/Site.css?v=16

и заголовок местоположения в ответе выглядит следующим образом:

/MySite/Account/Login?ReturnUrl=%MySite%2fContent%2fSite.css%3fv%3d16&v=16

это делает я думаю, что MVC перенаправляет статический файл или что-то в этом роде, однако, если бы это было так, то я ожидал бы, что все мои изображения, CSS и JavaScript-файлы будут делать то же самое, чего они не делают. На всякий случай, вот упрощенная версия RegisterRoutes() в глобальном.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" }
    );
}

кроме того, если я изменю имя моего CSS-файла на Site2.css и ссылка на то, что вместо этого происходит то же самое.

что происходит?

2 ответов


перенаправление на метод входа в систему делает его похожим на это из-за разрешений на каталог или файл, а не на маршрут MVC, ловящий его. (Если он был пойман маршрутом MVC, это, вероятно, скорее приведет к ошибке определения того, какой контроллер и / или действие использовать.)

ASP.NET MVC сам оставляет статические файлы в покое, но если ASP.NET в общем, решает, что анонимный пользователь не имеет доступа к файлу CSS или его каталогу, ASP.NET перенаправит на URL-адрес входа в систему, который будет ASP.NET действие MVC.


похоже на правила авторизации в интернете.config говорят, что вы должны быть аутентифицированы, чтобы увидеть страницы css. Вы должны быть в состоянии доказать это, войдя в систему и увидев, можете ли вы получить файл css для правильной работы.

Я бы добавил раздел местоположения в интернет.config для удаления требования авторизации в каталоге содержимого. Взято из 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>