CSS и сценарии не работают, пока пользователь не войдет в систему на веб-сайте - Asp.NET MVC 3 Web Site - PullRequest
27 голосов
/ 07 февраля 2012

У меня есть сайт asp.net mvc 3, и я публикую его в iis 7.5 (framework 4.0), и проблема в том, что css и скрипты не работают, используя пользовательский логин на сайте.Итак:

  • Сайт был создан как виртуальный каталог и преобразован в приложение.
  • Режим аутентификации форм.
  • Я включаю в iis формы и анонимную аутентификацию.

Веб-конфигурация имеет:

<location path="Content" allowOverride="true">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
<location path="Scripts" allowOverride="true">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
        <globalization culture="pt-BR" uiCulture="pt-BR" />
    </system.web>
</location>

<authorization>
    <deny users="?"/>
</authorization>

Obs: dll, которые я добавляюв каталоге bin: System.Web.Helpers.dll, System.Web.Mvc.dll, System.Web.Routing.dll, System.Web.WebPages.dll.

Я пытался изменитьпуть в локации как "~ / Content", но я получил тот же результат.

Я попытался добавить тег разрешения в тег авторизации как:

<authorization>
    <deny users="?"/>
    <allow users="*"/>
</authorization>

Но я получил тот же результат.

Что мне не хватает?

Ответы [ 7 ]

50 голосов
/ 15 февраля 2012

Я понял это. Это было то, что я пропустил из своего контрольного списка при настройке нового приложения IIS: выберите приложение, дважды щелкните «Аутентификация», выберите «Анонимная аутентификация», затем «Редактировать» и измените его для использования идентификатора пула приложений. Убедитесь, что у пользователя есть права доступа к папке, содержащей сайт, как сказали другие.

4 голосов
/ 07 февраля 2012

У меня тоже была эта проблема, и проблема не в авторизации asp.net, а в правах на файлы в файловой системе.

Вы должны убедиться, что веб-сайт работает под учетной записью, которая имеет доступ к файлам. Для внутреннего тестирования я обычно запускаю веб-сайт под своей учетной записью, но, думаю, это не будет хорошей идеей в плане безопасности, если вы будете размещать его публично. Вы можете установить это в разделе «Дополнительные настройки» -> «Физические данные пути» для веб-сайта.

3 голосов
/ 23 сентября 2013

Попробуйте разрешить путь к содержимому, где хранятся ваши скрипты и CSS-файлы:

<configuration>
  <location path="content" allowOverride="true">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <system.web>
    <authorization>
      <allow roles="admin" />
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>
2 голосов
/ 30 августа 2016

Я вижу, что вы поняли это и довольны своим ответом.

У меня тоже была эта проблема, но это не было проблемой аутентификации пула приложений.Вместо этого я просто разрешил всем пользователям доступ к расположению файлов css / js, поэтому, по крайней мере, страница входа будет отображаться надлежащим образом до тех пор, пока пользователь не войдет в систему.

Например, поместив этот файл web.config в кореньof / site / public (или там, где собраны необходимые файлы css & js)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.web>
    <authorization>
        <allow users="*" />
    </authorization>
  </system.web>
</configuration>
1 голос
/ 07 февраля 2012

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

Кроме того, если это не работает, попробуйте поместить файлы web.config в папки «Сценарии и содержимое» только с атрибутами authorization.

Кроме того, существует небольшая вероятность того, что вы каким-то образом перегрузили свою маршрутизацию, и она перехватывает реальные запросы файлов.

0 голосов
/ 12 февраля 2018

Чтобы отслеживать принятый ответ, вы можете добавить теги authentication внутри местоположения, чтобы вам не приходилось вручную устанавливать это в IIS при развертывании на новых машинах. Здесь показан только один путь, но его легко скопировать для других путей, таких как ~/Scripts, ~/Fonts или для любого другого статического содержимого, на которое вы хотите сослаться.

<location path="Content" allowOverride="true">
  <!-- Authorize all users -->
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>

  <!-- Authenticate anonymous users -->
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>
0 голосов
/ 19 августа 2015

IUSR, как правило, является пользователем олицетворения по умолчанию, настроенным для анонимной аутентификации.Если это так, я бы удостоверился, что IUSR имеет разрешения на чтение указанных папок.

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

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