Связывание стилей не работает после развертывания 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> Нажмите "Редактировать"> "Проверить идентичность пула приложений".
Аутентификация>RightClickOn Anonymous Auth> Нажмите 'Редактировать'> 'Проверить идентичность пула приложений'."/>
Когда вы используете публикацию VS на тестовом сервере, он использует defaultAppPool. Чтобы стиль и SimpleMembership работали, вам нужно:
Установите ASP.NET 4.0 на вашем сервере. cmd - cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\ Введите aspnet_regiis.exe -ir
Добавьте пул приложений ASP.NET 4.0 в IIS.
Настройте свой сайт на использование ASP.NET 4.0 в качестве пула приложений.
Добавьте вход безопасности ASP.NET 4.0 в SQL Server и назначьте ему роль dbcreate.