微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc-4 – ASP.NET优化 – 捆绑

我一直在尝试ASP.NET MVC 4中的新的缩小和捆绑功能,只要您使用css和js文件文件夹约定,它的效果非常好.
/Content
/Scripts

我通常将css和脚本放在一个名为Static的文件夹中

/Static/Css
/Static/Js

我试图注册我自己的捆绑包,如下所示:

public static class BundleCollectionExtensions
{
    public static void RegisterScriptsAndCss(this BundleCollection bundles)
    {
        var bootstrapCss = new Bundle("~/Static/Css",new CssMinify());
        bootstrapCss.AddDirectory("~/Static/Css","*.css");
        bootstrapCss.AddFile("~/Static/Css/MvcValidation.css");
        bootstrapCss.AddFile("~/Static/Css/bootstrap-responsive.min.css");
        bootstrapCss.AddFile("~/Static/Css/bootstrap.min.css");

        bundles.Add(bootstrapCss);

        var bootstrapJs = new Bundle("~/Static/Js",new JsMinify());
        bootstrapJs.AddDirectory("~/Static/Js","*.js");
        bootstrapJs.AddFile("~/Static/Js/jquery-1.7.1.min.js");
        bootstrapJs.AddFile("~/Static/Js/jquery.validate.min.js");
        bootstrapJs.AddFile("~/Static/Js/jquery.validate.unobtrusive.min.js");
        bootstrapJs.AddFile("~/Static/Js/bootstrap.min.js");
        bootstrapJs.AddFile("~/Static/Js/gunsforhire.js");

        bundles.Add(bootstrapJs);
    }
}

在里面

Global.ascx.cs

我做到了

BundleTable.Bundles.RegisterScriptsAndCss();

生成标记如下所示:

<link href="/Static/Css?v=D9JdmLZFFwjRwraNKfA1uei_YMoBoqLf-gFc0zHivM41" rel="stylesheet" type="text/css" />

<script src="/Static/Js?v=mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1" type="text/javascript"></script>

但是它不起作用,请求如下所示:

Request URL:http://localhost:49603/Static/Js?v=mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1
Request Method:GET
Status Code:301 Moved Permanently (from cache)
Query String Parametersview URL encoded
v:mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1

Request URL:http://localhost:49603/Static/Js/?v=mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1
Request Method:GET
Status Code:404 Not Found
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:localhost:49603
Referer:http://localhost:49603/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML,like Gecko)        Chrome/17.0.963.56 Safari/535.11
Query String Parametersview URL encoded
v:mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1
Response Headersview source
Cache-Control:private
Content-Length:4757
Content-Type:text/html; charset=utf-8
Date:Thu,01 Mar 2012 19:05:44 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?   QzpcQENvZGVccGVsbGVccGVsbGVoZW5yaWtzc29uLnNlXHNyY1xXZWJcU3RhdGljXEpzXA==?=

我究竟做错了什么?

更新

我想我终于可以通过以下方式解决这个问题:

>删除AddDirectory调用bootstrapCss.AddDirectory(“〜/ Static / Css”,“* .css”);
>给出不反映真实目录结构的bundle的路径

解决方法

你在做什么“错”是你的捆绑路径对应一个REAL路径.据了解,当“/ Static / Css?v = D9JdmLZFFwjRwraNKfA1uei_YMoBoqLf-gFc0zHivM41”的请求进入时,路由引擎首先查找物理路径.它找到与您的文件夹“静态”匹配,并尝试找到一个匹配“Css?v = D9JdmLZFFwjRwraNKfA1uei_YMoBoqLf-gFc0zHivM41”的文件.当它找不到一个,因为它不存在,它给了一个404.(我也看到一个访问被拒绝.)当路由引擎找不到一个物理文件路径,然后看起来像其他处理程序,如捆绑和细化以提供请求.

无论如何,我认为你已经从你的意见中解决了,但我不知道任何人发现你的问题会非常清楚.只需更改您的注册

var bootstrapCss = new Bundle("~/Static/Css",new CssMinify());

至:

var bootstrapCss = new Bundle("~/bundles/Css",new CssMinify());

如果你做出这样的改变,你的问题就会消失,(授予没有对应于“捆绑”的物理路径).

原文地址:https://www.jb51.cc/aspnet/250318.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐