Связывание стилей не работает после развертывания IIS (MVC 4)

У меня проблемы с связыванием таблиц стилей после развертывания в IIS. Я создал простое решение, чтобы продемонстрировать свою проблему.

Я создал простой тестовый проект (VS 2012, MVC 4) с одним контроллером и представлением, содержащим строку "Hello World".

Я создал (тестовый) CSS в папке содержимого с простой простой сменой цвета

Content\helloWorldCss\helloWorldStyle.css

Затем я отредактировал свой класс BundleConfig.cs и добавил путь к моему CSS в качестве нового пакета:

            bundles.Add(new StyleBundle("~/Content/helloWorldCss").Include("~/Content/helloWorldCss/helloWorldStyle.css"));

Затем я добавил новый пакет в свой _Layout.cshtml:

@Styles.Render("~/Content/helloWorldCss")

Когда я запускаю свое приложение через VS (или инспектор страниц), мой CSS успешно применяется, и кажется, что все в порядке. Однако, когда я публикую / развертываю свой проект в IIS (через VS), я могу просмотреть свой HTML, но мой CSS не применяется. Следующий файл существует после развертывания:

Content\helloWorldCss\helloWorldStyle.css

Что меня действительно озадачивает, так это то, что когда я изменяю свой _Layout.cshtml и добавляю "обычный" ref к тому же CSS вместо того, чтобы использовать ref пакета, CSS применяется после публикации без каких-либо проблем.

<link href="@Url.Content("~/Content/helloWorldCss/helloWorldStyle.css")" rel="stylesheet" type="text/css" />*

Буду признателен за любую помощь и совет по этому вопросу.

3 ответа

Решение

Я думаю, что у вас здесь есть столкновение имен. ASP.NET MVC создаст файл на http://example.org/Content/helloWorldCss после минификации, и у вас уже есть папка с таким же путем. Можете ли вы попробовать еще раз после переименования вашего пакета?

BundleConfig.cs:

bundles.Add(new StyleBundle("~/Content/helloWorld").Include("~/Content/helloWorldCss/helloWorldStyle.css"));

_Layout.cshtml:

@Styles.Render("~/Content/helloWorld")

Вот что я делаю. Конфигурация IIS> Аутентификация>RightClickOn Anonymous Auth> Нажмите "Редактировать"> "Проверить идентичность пула приложений".

Конфигурация IIS>Аутентификация>RightClickOn Anonymous Auth> Нажмите 'Редактировать'> 'Проверить идентичность пула приложений'.Аутентификация>RightClickOn Anonymous Auth> Нажмите 'Редактировать'> 'Проверить идентичность пула приложений'."/>

Когда вы используете публикацию VS на тестовом сервере, он использует defaultAppPool. Чтобы стиль и SimpleMembership работали, вам нужно:

  1. Установите ASP.NET 4.0 на вашем сервере. cmd - cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\ Введите aspnet_regiis.exe -ir

  2. Добавьте пул приложений ASP.NET 4.0 в IIS.

  3. Настройте свой сайт на использование ASP.NET 4.0 в качестве пула приложений.

  4. Добавьте вход безопасности ASP.NET 4.0 в SQL Server и назначьте ему роль dbcreate.

Другие вопросы по тегам