ASP.NET MVC 4捆绑包出现404错误

ASP.NET MVC 4捆绑包出现404错误,asp.net,asp.net-mvc-4,bundling-and-minification,umbraco6,system.web.optimization,Asp.net,Asp.net Mvc 4,Bundling And Minification,Umbraco6,System.web.optimization,我想将捆绑包添加到现有的ASP.NET MVC 4(.NET 4.5)网站中,该网站使用: 翁布拉科6.1.5 Microsoft ASP.NET Web优化框架1.1.3() 我尝试按照以下说明进行操作:,在开始使用bundles路径之前,CSS加载良好 在页面加载时,它将插入样式引用: <link href="/bundles/marketingcss" rel="stylesheet"> 以下是我在代码中的内容: Web.Config <add key="umbra

我想将捆绑包添加到现有的ASP.NET MVC 4(.NET 4.5)网站中,该网站使用:

  • 翁布拉科6.1.5
  • Microsoft ASP.NET Web优化框架1.1.3()
我尝试按照以下说明进行操作:,在开始使用bundles路径之前,CSS加载良好

在页面加载时,它将插入样式引用:

<link href="/bundles/marketingcss" rel="stylesheet">
以下是我在代码中的内容:

Web.Config

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/bundles" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/opt/" />
\u Layout.cshtml

@Styles.Render("~/bundles/marketingcss");
BundleConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;
using System.Web.Security;
using System.Web.SessionState;
using Umbraco.Web;

namespace MapCom
{
    public class Global : UmbracoApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            base.OnApplicationStarted(sender, e);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;

namespace MapCom
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = true;
            ///
            ///Marketing Site CSS Bundle
            ///
            bundles.Add(new StyleBundle("~/bundles/marketingcss")
                .Include("~/plugins/bootstrap/css/bootstrap.min.css")
                .Include("~/css/font-awesome.min.css")
                .Include("~/plugins/parallax-slider/css/parallax-slider.css")
                .Include("~/css/combinedStyles.min.css")
                .Include("~/plugins/ladda-buttons/css/ladda.min.css")
                .Include("~/plugins/ladda-buttons/css/custom-lada-btn.css"));
        }
    }
}

有什么想法吗?

试试下面的建议:

1.不要对您的css虚拟路径使用关键字bundles,因此只需将其更改为其他内容,并仅对脚本使用关键字bundles。 像这样:

记住您需要确保,如果您在内容文件夹下有一个名为marketingcss的文件,您应该将虚拟路径更改为其他路径,以便虚拟路径不应与物理路径重复)

2.在_Layout.cshtml中,使用以下行代替您的行:

3.如果上述建议无效,请在您的_Layout.cshtml中尝试以下建议:


已更新

4.刚才看到我们的一位朋友关于不要将.min文件放入捆绑包的评论,这是正确的,因此您不能在budleConfig类中包含.min文件,只需使用普通文件,如
bootstarp.css
,而不是
bootstrap.min.css
,并对所有其他文件执行相同操作,当然,首先要确保你有正常的文件,而不仅仅是更改名称


我希望它有助于修复您的代码

在深入研究Umbraco之后,我注意到我正在进行的项目使用了一个类:

 public class ApplicationEventHandler : IApplicationEventHandler
这里将更详细地解释:

但要点是:

为了绑定到Umbraco应用程序中的某些事件,您需要在应用程序启动期间进行这些注册。根据您正在使用的Umbraco版本,有多种方法可以连接到应用程序。您使用的版本越高,它就变得越健壮

因此,Umbraco正在覆盖一些ASP.NET启动方法

我通过在ApplicationEventHandler.cs中添加对System.Web.Optimization的引用解决了我的问题,并将捆绑注册移动到该类中的此方法:

public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

这里唯一适用于我的方法是在
web.config

我的捆绑代码

BundleTable.Bundles.Add(new ScriptBundle("~/opt/jscripts").Include(
                "~/Scripts/twitterFetcher.js"
                ));
            BundleTable.EnableOptimizations = true;
Umbraco默认设置

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/bundles" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/opt/" />

新设置

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/bundles" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/opt/" />


不确定它是否仍然适用,但至少在过去,如果文件名中包含“.min”的文件,则绑定将根本无法工作。输出似乎表明
Styles.Render
认为您指向的是一个实际的文件,而不是一个捆绑包-否则,当启用
EnableOptimizations
时,它将包括一个版本查询参数,即
/bundles/marketingcss?v=…
@JimmiTh,这确实有助于修复我启动捆绑包后在捆绑包中出现的一些明显错误。谢谢不幸的是,这些项目都没有起到作用——确定是Umbraco的技术问题导致了问题。@cvocvo您能否详细说明Umbraco的技术问题,我想我遇到了与youUmbraco相同的问题,因为youUmbraco覆盖了许多ASP.NET功能,如:成员资格(UmbracoMembershipProvider)、当前线程:以及其他更多。想想这个“问题”,从现在开始,如果我更新了web.config(请参见我的答案),我在访问字体很棒的字体时遇到了同样的问题,那么在其他解决方案中,请尝试这些链接,这些链接涉及
样式包
虚拟路径:,希望这对某人有所帮助。对--您肯定需要添加保留路径,否则Umbraco routing将尝试处理该路径,而不是让.NET处理它。