2013-09-22 5 views
12

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

Я создал простой тестовый проект (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 и добавить «регулярный» реф к тому же CSS вместо того, чтобы использовать пучок реф, то CSS применяется после публикации без каких-либо проблем.

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

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

ответ

12

Думаю, у вас здесь столкновение имен. 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") 
+0

Вы верны. Это действительно проблема. Благодаря! – Omri

+0

Знак '~' здесь является основным источником путаницы. Знак необходим для определения пакета. Это заставило меня подумать, что это путь к папке, который НЕ ДОЛЖЕН быть. :) Благодаря!! Помог мне. – mrsrizan

6

Это то, что я делаю. IIS Config> Аутентификация> RightClickOn Anonymous Auth> Нажмите кнопку Изменить> Проверить идентичность пула приложений

IIS Config>Authentication>RightClickOn Anonymous Auth>Click Edit> Check Application pool identity

+0

Это было самое простое исправление и лучший ответ. Благодаря! –

+0

Great Fix! Почему это не установлено по умолчанию? Вы всегда должны использовать пулы приложений IIS для обеспечения безопасности. Спасибо!! –

0

При использовании 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.

Смежные вопросы