Членство в ASP.NET: CSS заблокирован запрещенными пользователями, страница отображается некорректно?

У меня есть страница, которая работает правильно, но когда я выдаю пользователю отказ для всего сайта, он перенаправляет меня на страницу входа в систему, которая, кажется, работает, НО 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>

Объект перемещен в здесь .

8
задан mark smith 17 August 2010 в 17:24
поделиться

4 ответа

Попробуйте удалить тильду (~) в атрибуте пути вашего местоположения. Если вы посмотрите на результат скрипта, это будет запрос обратного вызова для вашего CSS. поэтому неаутентифицированный запрос страницы, в свою очередь, делает неаутентифицированные запросы на ресурсы (CSS).

Обычно я стараюсь разместить каталог стилей в корне приложения, а затем использую вспомогательный инструмент, такой как T4MVC или мои собственные вспомогательные методы, чтобы переводить, и избегаю необходимости выяснять . ./../ сканирование каталога.

3
ответ дан 5 December 2019 в 07:56
поделиться

Использовать скрипач , чтобы точно узнать, что происходит с этим ресурсом? Может пролить свет на тайну. Он должен 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> 
7
ответ дан 5 December 2019 в 07:56
поделиться

302 поступает из инфраструктуры входа в систему и перенаправляет вас на вход при запросе CSS.

Уловка здесь в том, что ваше приложение MVC не должно настраивать безопасность через web.config, а вам следует использовать атрибуты [Authorize] на ваших контроллерах, которые не будут мешать вашему CSS.

4
ответ дан 5 December 2019 в 07:56
поделиться

Для начала избегайте жестко заданных путей к ресурсам, таким как файлы JS или CSS, в представлениях ASP.NET MVC. Использование /Content/Site.css не лучше, чем ../../ ..

Использование помощника Url.Content:

<%=Url.Content("~/public/scripts/jquery-1.4.2.min.js")%>
2
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: