我知道有很多关于这个主题的话题,但我想我已经读完了所有这些。由于我仍然无法解决我的问题,所以我写了自己的主题。
这是我的BundleConfig文件:
public static void RegisterBundles(BundleCollection bundles)
{
var scriptBundle = new ScriptBundle("~/bundles/layoutJS")
.Include(
"~/Scripts/jquery-1.11.2.js"
, "~/Scripts/jquery-ui.js"
, "~/Scripts/jquery.stellar.js"
, "~/Scripts/jquery.velocity.js"
, "~/Scripts/jquery.tubular.1.0.custom.js"
, "~/Scripts/helper.js"
, "~/Scripts/Style/Plugins/popup.js"
, "~/Scripts/Style/Plugins/select.js"
, "~/Scripts/Style/Plugins/jQuery/cnil.js"
, "~/Scripts/Style/layout.js"
);
scriptBundle.Orderer = new BundleOrderer();
bundles.Add(scriptBundle);
var cssBundle = new StyleBundle("~/bundles/layoutCSS")
.Include(
"~/Content/Style/Font-Awesome/font-awesome.css"
, "~/Content/Style/Jquery-ui/jquery-ui.css"
, "~/Content/Style/Jquery-ui/jquery-ui.structure.css"
, "~/Content/Style/Jquery-ui/jquery-ui.theme.css"
);
cssBundle.Orderer = new BundleOrderer();
bundles.Add(cssBundle);
}
我没有这一行:
BundleTable.EnableOptimizations = true;
因为我有 web.config 这样做。这是我的web.config的一部分(仅用于localy)
<system.web>
<compilation targetFramework="4.5.1" debug="true" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
以下是用于我的舞台服务器的 web.release.config :
<system.web xdt:Transform="Replace">
<compilation targetFramework="4.5.1" debug="false"/>
</system.web>
最后在我的 _layout.cshtml 中,我像这样渲染我的包:
@Styles.Render("~/bundles/layoutCSS")
@Scripts.Render("~/bundles/layoutJS")
所以我觉得我没事,但......不是:(如果我在本地运行我的网站,无论是调试还是发布配置,行为都行,我的所有脚本和样式都是礼物,没有错误在Chrome控制台中。
但是当我在我的服务器上部署时......它已经坏了: - 首先,我在源代码中的bundle上没有版本号 - 第二个显然我每个捆绑都有404 ...
我服务器的IIS上有什么问题吗? 我错过了什么吗?
非常感谢你的未来答案!
编辑:捆绑注册:
protected void Application_Start()
{
Bootstraper.Run();
var unitOfWork = (IUnitOfWork)Bootstraper.GetInstance<IUnitOfWork>();
var cache = (ICacheManager) Bootstraper.GetInstance<ICacheManager>();
MvcHandler.DisableMvcResponseHeader = true;
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes, unitOfWork.RouteRepository, cache);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
答案 0 :(得分:0)
更新您的web.config,更改以下<system.webServer>
部分:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
</system.webServer>
答案 1 :(得分:0)
Aaaaaaalright,实际上一切都好。唯一的问题是我的脚本文件夹中有一个目录为空,所以它没有被部署...不幸的是我在模式中有一个规则用于制作一些包。所以它打破了所有其他捆绑包。
感谢@Vivien Chevallier的回答。