rog*_*ito 22 c# asp.net asp.net-mvc bundle asp.net-mvc-4
我正在尝试捆绑在ASP.NET MVC 4中工作.我从为捆绑的CSS生成的链接中收到404错误.我做了以下事情:
通过NuGet安装"Microsoft ASP.NET Web Optimization Framework"软件包(v4.0.20710.0)
在App_Start目录中创建了一个BundleConfig类,其中包含以下内容:
using System.Web.Optimization;
namespace BsdAppTemplate.Web_Nancy.App_Start
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/bundles/styles/cvi").Include(
"~/mainstyles.css"
));
}
}
}
Run Code Online (Sandbox Code Playgroud)在站点根目录的Web.config中添加了以下内容:
<system.web>
<compilation debug="false" targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web.Optimization"/>
...
</namespaces>
</pages>
</system.web>
Run Code Online (Sandbox Code Playgroud)将以下内容添加到我的MVC布局文件的head元素中:
@Styles.Render("~/bundles/styles/cvi")
Run Code Online (Sandbox Code Playgroud)将BundleConfig("mainstyles.css")中引用的CSS文件复制到我的Web项目的根目录中.
当我查看渲染文件的来源时,我可以看到链接显示为:
<link href="/bundles/styles/cvi" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)
此链接在浏览时会生成404,或在Chrome的网络标签中查看页面请求.
我也尝试过Web表单上的等价物,但是从添加时生成的链接中得到了相同的结果(404):
<%: Styles.Render("~/bundles/styles/cvi") %>
Run Code Online (Sandbox Code Playgroud)
fia*_*iat 60
通过谷歌搜索结果找到了这个问题,但我的案例中的问题是Windows 2008 web.config在编译debug = false时需要这个.
<system.webServer>
<modules>
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
没有这个,它在Win7开发机上运行良好.
tpe*_*zek 26
您似乎错过了通过调用RegisterBundles来应用配置的步骤Application_Start:
protected void Application_Start()
{
...
BundleConfig.RegisterBundles(BundleTable.Bundles);
...
}
Run Code Online (Sandbox Code Playgroud)
通常在BundleConfig类已经存在的情况下(作为项目模板的一部分或在安装期间由NuGet包创建),此调用也已存在 - 这就是许多教程隐含的原因.
您还应该知道,该BundleConfig课程是为了分离关注点和保持Application_Start清洁.在简单的情况下,没有什么可以阻止您直接注册包Application_Start:
protected void Application_Start()
{
...
BundleTable.Bundles.Add(new StyleBundle("~/bundles/styles/cvi").Include("~/mainstyles.css"));
...
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*ver 13
我有同样的问题,我的脚本包突然响应404.我的解决方案类似于@fiat回答,我在这个博文上发现.
解决方案是删除并添加该BundleModule部分的模块部分system.webServer部分.
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题(在ASP.Net Webform中),我通过忽略Global.asax中的“捆绑/”路由解决了我的问题:
routeCollection.Ignore("bundles/{*catch}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19015 次 |
| 最近记录: |