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 не было в папке содержимого, поэтому я искал его в пакетах и вставлял туда.. он работал!