Публикация сайта Umbraco, пакеты не работают
У меня есть веб-сайт, созданный в Umbraco, подключенный к Visual Studio 2012. Когда я запускаю проект (F5), он выглядит так, как должно быть с CSS и jQuery. В этом проекте мы используем связки.
Когда я публикую свой веб-сайт, пакеты не могут быть найдены.
"Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найдено) http://mywebsite.local/bundles/styles" Когда я смотрю в консоль (в браузере), я могу найти пакеты папок, и стиль файла. Но это пусто.
Но на локальном сайте в файле стилей есть CSS.
Что я делаю неправильно? Я имею в виду, это тот же код? Как будто где-то на пути половина моего кода просто исчезает. Я также использую Optimus в качестве пакета для Umbraco, но это, похоже, не имеет никакого значения.
Вот мой BundleConfig:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/bundles/custom/css").Include(
"~/css/MasterStyle.css",
"~/css/TopMenu.css",
"~/css/SmallImages.css",
"~/css/SideMenu.css",
"~/css/Footer.css",
"~/css/Support.css",
"~/css/Highlight.css"));
bundles.Add(new ScriptBundle("~/bundles/js/jquery").Include(
"~/scripts/jquery-{version}.js",
"~/scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap/js").Include(
"~/scripts/bootstrap.js"
));
bundles.Add(new ScriptBundle("~/bundles/js").Include(
"~/scripts/TopMenu.js",
"~/scripts/Master.js"));
LogHelper.Info<string>("Bundles Loaded");
//Comment this out to control this setting via web.config compilation debug attribute
BundleTable.EnableOptimizations = true;
}
Мой Global.Asax (я не написал это, и определенно не уверен, что это правильно)
<script runat="server">
void Application_Start()
{
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
</script>
ОБНОВЛЕНИЕ: Проверьте правильный помеченный ответ, я решил его, следуя этому руководству, и использовал код, который был опубликован в ответе. Я также заметил небольшую ошибку в моем bundle.config (которую я проверял ранее, так что это не было главной проблемой). В моем "bundles.Add(new StyleBundle("~/bundles/custom/css")" у меня неправильный путь, для меня это должно быть "~/bundles/styles". И комбинация всего этого заставила его работать!
1 ответ
Предполагая, что вы используете Umbraco 6 или 7, вы можете проследить суть здесь: Как использовать связывание и минимизацию ASP.NET в Umbraco
Тем не менее, вы должны использовать ApplicationEventHandler
производный класс, чтобы вы могли зарегистрировать их при запуске, вместо того, чтобы пытаться создать свой собственный класс Global.asax.cs (теперь это рекомендуемый способ сделать это с Umbraco):
public class ArticleEventHandler : Umbraco.Core.ApplicationEventHandler
{
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Альтернативой Bundling является использование пакета ClientDependency, поставляемого в комплекте с Umbraco. Я могу уточнить это, если понадоблюсь, но есть множество примеров и документации по этому вопросу.