ASP.NET MVC framework 4.5 Пакеты CSS не работают на хостинге

Я запускаю приложение на гавань приложений, написанное в MVC4.

Пакет css-файлов не работает. На моем локальном компьютере в режиме отладки я вижу код приложения, и я вижу файлы. Приложение работает как ожидалось.

  

Когда я загружаю приложение в Appharbor, я вижу пакет в коде, но приложение не работает.

  

Когда я просматриваю эту ссылку в href я получаю 403 – Запрещено: Доступ запрещен.

Как устранить эту проблему?

Я предполагаю, что путь Content/css существует на диске в вашем приложении. В этом случае IIS будет обрабатывать запрос, а не MVC.

Убедитесь, что виртуальный путь для пакета (параметр конструктора StyleBundle) не соответствует папке в файловой системе.

Из комментариев:

«Хорошим соглашением следовать при создании пакетов является включение« bundle »в качестве префикса в имени пакета, что предотвратит возможный конфликт маршрутизации».

Эта проблема по умолчанию .NET не обрабатывает запросы с расширением .js или .css.

Для этого есть два исправления (вам нужно только сделать ОДИН)

A) Удалите расширения из имен пакетов. (рекомендуется) Это заставит .NET обрабатывать запрос и запускать его через BundleModule.

B) Добавьте это в свой web.config в разделе system.webServer, который заставит .NET запускать запросы .js и .css через BundleModule.

     

Большой крик Рэй Моро, который понял фактическую причину и поделился ею со мной в моем блоге: http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html

Случилось также со мной, когда я попробовал развернуть приложение ASP.NET MVC на AppHarbor.

У меня был комплект стилей с именем

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

и структура папок была

– Содержание

– Содержимое \ Bootstrap \ …

Просто изменив имя пакета на "~/Content/bootstrap-css" моя проблема была решена.

Я знаю, что я опаздываю на этот вопрос на 4 года, но это сработало для меня.

 public static void RegisterBundles(BundleCollection bundles) { ... BundleTable.EnableOptimizations = true; // Added this } 

Ошибка 403. вот подробное объяснение и решение для ошибки 403.
Решение продемонстрировано для набора CSS. Однако это также относится к JavaScript.

http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved

Вкратце, убедитесь, что виртуальный путь [Script | Style]Bundle("~/content/[script | css]") [Script | Style]Bundle("~/content/[script | css]") не соответствует папке в файловой системе (например, C:\approot\Content\[script | css] ) вместо [Script | Style]Bundle("~/content/[scriptDiff | cssDiff]") [Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")

То, что я делаю, очень просто,

Я добавляю «js» в конец ScriptBundle следующим образом: new ScriptBundle («~ / bundles / appjs») И добавляю «css» в конце StyleBundle следующим образом: new StyleBundle («~ / content / appcss»)

Мои имена папок никогда не заканчиваются словами «js» или «css».

Это должно сделать это.

Это также относится к classу ScriptBundle, убедитесь, что имя параметра в конструкторе не соответствует пути в файловой системе веб-приложения. Помните, что IIS будет пытаться обслуживать файл / запрос.

Проблема также может возникать из зашифрованного файла. Это произошло со мной, когда я загрузил BootStrap и использовал предоставленные файлы. Они показали зеленый цвет в проводнике Windows и отлично работали в Visual Studio, но при развертывании я получил ошибку 403.

Вы можете узнать, зашифрованы ли они, перейдя к свойствам, затем расширенным свойствам и установлен флажок encypted.

Снимите флажок, и это уже не будет проблемой.

У меня такая же проблема с ошибкой (403 Forbidden). В моем случае причина прокси-сервера в моей организации блокирует мой файл css. Имя файла Css соответствует одному из правил блока.

Я обнаружил, что файл bootstrap.css не был в папке содержимого, поэтому я искал его в пакетах и ​​вставил туда .. он сработал!

Давайте будем гением компьютера.