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

я запускаю приложение на App harbor, написанное на MVC4.

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

<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/>
<link href="/Content/css/home/Home.css" rel="stylesheet"/>

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

<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/>

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

как устранить неполадки?

11 ответов


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

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

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

" хорошее соглашение, которому следует следовать при создании пакетов, должно включать "bundle" как префикс в имени пакета. Это предотвратит возможное маршрутизирующий конфликт."


эта проблема по умолчанию .NET не" обрабатывает " запросы, которые имеют .js or .расширение css.

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

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

B) добавьте это в свой веб.config в


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

у меня был набор стилей с именем

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

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

-- Content

-- Content \ Bootstrap \ ...

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


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

public static void RegisterBundles(BundleCollection bundles)
{
   ...

   BundleTable.EnableOptimizations = true;     // Added this           
}

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

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

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


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

Я добавляю "js" в конце ScriptBundle так: новый ScriptBundle ("~/bundles / appjs") И я добавляю "css"в конце StyleBundle так: новый StyleBundle ("~/content/appcss")

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

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


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


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

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

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


Я решил проблему, добавив ниже строку кода в классе BundleConfig

BundleTable.EnableOptimizations = false;

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


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