ASP.NET MVC просит меня пройти повторную аутентификацию для файлов PNG, но не для GIF или JPEG - PullRequest
4 голосов
/ 09 октября 2010

По какой-то причине, каждый раз, когда я ссылаюсь на PNG из моего application.css файла, меня просят ввести учетные данные.Тем не менее, я могу без проблем ссылаться на GIF, JPEG и т. Д. Из моего каталога изображений.

Мои маршруты настроены так:

public static void RegisterRoutesTo(RouteCollection routes) {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("elmah.axd");
        routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        routes.MapRoute(
            "Default", "",                   
            new { controller = "Home", action = "Index"}  // Parameter defaults
        );

        routes.MapRoute(
            "Session", "{action}",
            new { controller = "Session" },
            new { action = "(login|logout|register)" }
        );

        routes.MapRoute("CatchAll",  "{*catchall}",
            new { controller = "Error", action = "NotFound" });
    }

В моем CSS у меня есть это:

.iconLocationLarge { background-image: url(../images/icon_vcarea_48x48.png) !important;}
.iconVCLarge { background-image: url(../images/tb-btn-sprite.gif) !important;}

Проблема в том, что мне снова предлагается подтвердить подлинность, если я использую PNG, но не с GIF.Почему?

Ответы [ 3 ]

2 голосов
/ 10 октября 2010

IIS может обслуживать контент напрямую, не передавая запрос в ASP.NET. Я подозреваю, что в вашем случае IIS настроен на обслуживание GIF и JPG, но не PNG. Смотрите, например, http://mvolo.com/blogs/serverside/archive/2006/11/10/Stopping-hot_2D00_linking-with-IIS-and-ASP.NET.aspx для обсуждения этой темы. Смотри также http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/4c840252-fab7-427e-a197-7facb6649106.mspx?mfr=true.

Предполагая, что это IIS6, откройте IIS Manager из Администрирования, щелкните правой кнопкой мыши узел локального компьютера, выберите типы MIME и убедитесь, что PNG зарегистрирован как «image / png». Вы также можете настроить это на уровне отдельного веб-сайта.

Убедитесь, что нет другого фильтра, который мог бы вызвать проблему, например, фильтр UrlScan ISAPI.

2 голосов
/ 12 октября 2010

Окончательно решено:

Файлы PNG, на которые я ссылался, были зашифрованы.Вот и все.

После окончательного исчерпания всех других параметров в IIS и ASP.NET я заметил, что каждый PNG-файл, на который я ссылался, имел атрибуты "AE" (E = Encrypted).Таким образом, решение состояло в том, чтобы щелкнуть правой кнопкой мыши папку, нажать кнопку «Дополнительно» и отменить выбор опции «Шифрование».

0 голосов
/ 10 октября 2010

Я не уверен, почему, но, вероятно, вам следует добавить игнорирующие маршруты для всего статического содержимого независимо от этого.

ASP.NET MVC считает, что мой виртуальный каталог - это контроллер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...