У меня есть страница, которая работает правильно, но когда я выдаю пользователю отказ для всего сайта, он перенаправляет меня на страницу входа в систему, которая, кажется, работает, НО css не работает. Значит и стайлинга нет ..
Кто-нибудь может помочь? Мой web.config выглядит так
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
Эта страница входа в систему использует site.master, имеет следующую таблицу стилей, но не может стилизовать документ, когда указанное выше включено.
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
Чтобы подтвердить, ii удалите указанную выше часть в web.config, затем она работает, следовательно, css включен и выполнен в стиле beng
. Я подумал, что это может быть связано с отказом от css ... поэтому я добавил следующее, но это не имеет никакого значения. Я знаю, что site.master отображается на странице входа в систему, потому что я вижу заголовки и т. Д.
<location path="~/Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Я также использовал firebug в firefox для просмотра css, если теги авторизации включены в web.config, то там указано нет CSS. Если я удалю теги, я смогу увидеть CSS, и страница будет отображаться правильно.
Я, должно быть, что-то упускаю. Любая помощь очень ценится
заранее спасибо
РЕДАКТИРОВАТЬ
Скрипач заявляет, что site.css перемещен ??
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: /InmoCasaWebClient/Account /LogOn?ReturnUrl=%2fInmoCasaWebClient%2fContent%2fSite.css
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 17 Aug 2010 17:19:12 GMT
Content-Length: 201
<html><head><title>Object moved</title></head><body>
Попробуйте удалить тильду (~) в атрибуте пути вашего местоположения. Если вы посмотрите на результат скрипта, это будет запрос обратного вызова для вашего CSS. поэтому неаутентифицированный запрос страницы, в свою очередь, делает неаутентифицированные запросы на ресурсы (CSS).
Обычно я стараюсь разместить каталог стилей в корне приложения, а затем использую вспомогательный инструмент, такой как T4MVC или мои собственные вспомогательные методы, чтобы переводить, и избегаю необходимости выяснять . ./../
сканирование каталога.
Использовать скрипач , чтобы точно узнать, что происходит с этим ресурсом? Может пролить свет на тайну. Он должен 403, если он неавторизован. Может быть 404ing? Если он не находится в виртуальном каталоге, вы можете просто написать:
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
(перемещение по каталогам ненадежно)
Обновление - теперь больше информации
Хорошее использование скрипачом;) В любом случае, поскольку он 302 перенаправляет (временно перенаправляет) ваши файлы css чтобы требовать проверки, проблема заключается в проверке подлинности ваших форм.
Вы, вероятно, столкнулись с проблемой runAllManagedModuleForAllRequest = "true" . Прочтите этот пост для информации.
Или установите полный доступ к папке Content, чтобы разрешить доступ. Вы почти у цели, но это должно быть:
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
302 поступает из инфраструктуры входа в систему и перенаправляет вас на вход при запросе CSS.
Уловка здесь в том, что ваше приложение MVC не должно настраивать безопасность через web.config, а вам следует использовать атрибуты [Authorize] на ваших контроллерах, которые не будут мешать вашему CSS.
Для начала избегайте жестко заданных путей к ресурсам, таким как файлы JS или CSS, в представлениях ASP.NET MVC. Использование /Content/Site.css не лучше, чем ../../ ..
Использование помощника Url.Content:
<%=Url.Content("~/public/scripts/jquery-1.4.2.min.js")%>