我正在尝试缩小我的.js和.css文件。
我已经安装了打包的Install-Package Microsoft.AspNet.Web.Optimization
当我使用BundleTable.EnableOptimizations = true;
我在客户端收到此错误:
无法加载资源:服务器响应状态为403(禁止)http://localhost:22773/Content/themes/elevation/v=gnDLBbf1VVRuQDXtIYn1q0P3ICZG7oiwwgxPRbaLvqI1
任何人都知道我做错了什么?
--- BundleConfig info -------------------------------
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
BundleTable.EnableOptimizations = true;
bundles.Add(new ScriptBundle("~/bundles/myJquery").Include(
"~/Scripts/jquery-1.9.1.js",
"~/Scripts/jquery-ui-1.10.1.custom.js",
"~/Scripts/jquery.signalR-1.0.1.js",
"~/Scripts/signalr-hubs.js",
"~/Scripts/Controls/Select/Simple/jquery.ui.selectmenu.js"
));
bundles.Add(new ScriptBundle("~/bundles/shared").Include(
"~/Scripts/global/prototypes.js",
"~/Scripts/global/mathutil.js",
"~/Scripts/global/elevationevents.js"
));
bundles.Add(new ScriptBundle("~/bundles/core").Include(
"~/Scripts/elevation/core/sys.config.js",
"~/Scripts/elevation/core/bays.js",
"~/Scripts/elevation/core/door.js",
"~/Scripts/elevation/core/horiziontal.js",
"~/Scripts/elevation/core/vertical.js"));
bundles.Add(new StyleBundle("~/Content/themes/elevation").Include(
"~/Content/themes/dialogs/dialogs.css",
"~/Content/themes/social/ac/acSocial.css",
"~/Content/themes/elevation/elevation.css"
));
}
}
-----------------------------我还没弄明白---------- -----------
我在Windows7操作系统上使用2013 .net和iis8
这是我最新的错误,我无法将我的解决方案退出调试模式,因为如果我这样做,我会在下面收到该错误。
HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.
Most likely causes:
A default document is not configured for the requested URL, and directory browsing is not enabled on the server.
Things you can try:
If you do not want to enable directory browsing, ensure that a default document is configured and that the file exists.
Enable directory browsing.
Go to the IIS Express install directory.
Run appcmd set config /section:system.webServer/directoryBrowse /enabled:true to enable directory browsing at the server level.
Run appcmd set config ["SITE_NAME"] /section:system.webServer/directoryBrowse /enabled:true to enable directory browsing at the site level.
Verify that the configuration/system.webServer/directoryBrowse@enabled attribute is set to true in the site or application configuration file.
Detailed Error Information:
Module DirectoryListingModule
Notification ExecuteRequestHandler
Handler StaticFile
Error Code 0x00000000
Requested URL http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1
Physical Path c:\users\administrator\documents\visual studio 2013\Projects\AlumCloud\AlumCloud\Content\themes\elevation\
Logon Method Anonymous
Logon User Anonymous
Request Tracing Directory C:\Users\Administrator\Documents\IISExpress\TraceLogFiles\ALUMCLOUD(3)
More Information:
This error occurs when a document is not specified in the URL, no default document is specified for the Web site or application, and directory listing is not enabled for the Web site or application. This setting may be disabled on purpose to secure the contents of the server.
View more information »
以下是iis8在未处于产生错误的调试模式时创建的网址
http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1
以下是返回实际.css文件而没有任何错误的网址
http://localhost:1499/Content/themes/elevation/elevation.css
答案 0 :(得分:42)
刚刚遇到同样的问题。就我而言,解决方案是为Content bundle提供不同的名称。我认为这是因为IIS拦截请求并将包名称视为目录,并且由于Content文件夹确实存在,因此它返回禁止错误。因此,您可以将~/Content/themes/elevation
重命名为~/css/themes/elevation
bundles.Add(new StyleBundle("~/css/themes/elevation").Include(
"~/Content/themes/dialogs/dialogs.css",
"~/Content/themes/social/ac/acSocial.css",
"~/Content/themes/elevation/elevation.css"
));
另外,不要忘记调整标记/母版页以使用修订后的软件包名称,即
<%: Styles.Render("~/css/themes/elevation") %>
然后将位置指令添加到web.config以允许访问包:
<location path="css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="bundles">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
希望这有帮助。
答案 1 :(得分:3)
您必须使捆绑名称与资源的实际路径类似。否则系统在使用debug='false'
或BundleTable.EnableOptimizations = true;
进行编译时无法找到资源。因为系统使用包名称来生成资源的链接。所以你的包名应该是这样的 -
bundles.Add(new ScriptBundle("~/Scripts/myJquery").Include(
"~/Scripts/jquery-1.9.1.js",
"~/Scripts/jquery-ui-1.10.1.custom.js",
"~/Scripts/jquery.signalR-1.0.1.js",
"~/Scripts/signalr-hubs.js",
"~/Scripts/Controls/Select/Simple/jquery.ui.selectmenu.js"
));
bundles.Add(new ScriptBundle("~/Scripts/global/shared").Include(
"~/Scripts/global/prototypes.js",
"~/Scripts/global/mathutil.js",
"~/Scripts/global/elevationevents.js"
));
bundles.Add(new ScriptBundle("~/Scripts/elevation/core/core").Include(
"~/Scripts/elevation/core/sys.config.js",
"~/Scripts/elevation/core/bays.js",
"~/Scripts/elevation/core/door.js",
"~/Scripts/elevation/core/horiziontal.js",
"~/Scripts/elevation/core/vertical.js"
));
bundles.Add(new StyleBundle("~/Content/themes/dialogs/dialog").Include(
"~/Content/themes/dialogs/dialogs.css"
));
bundles.Add(new StyleBundle("~/Content/themes/social/ac/ac").Include(
"~/Content/themes/social/ac/acSocial.css"
));
修改强> 这将适用于IIS 6.但是对于IIS 7或7.5,解决方案是另外的。我在IIS 7.5中部署应用程序时遇到了同样的问题。解决方案是按照ASP.NET MVC 4 on IIS 7.5, returns 404. Something to do with extensionless route mapping和ASP.NET 4.5 MVC 4 not working on Windows Server 2008 IIS 7
中的说明安装修补程序答案 2 :(得分:0)
你确定必须是/ elev / v = gn ...但不是/ themes / elevation吗?v = gnDLBbf(带?)?
答案 3 :(得分:0)
如接受的答案中所述,您指定的软件包名称与实际的现有文件夹发生冲突。例如,请考虑以下事项:
string qry = "UPDATE MyDb.MyTbl SET Comments = @p0 WHERE ID = @p1";
string comments = "a long long string";
using(var db = new AppDbContext()) {
var numRecords = db.Database.ExecuteSqlCommand(qry, comments, id);
return numRecords;
}
会给我OP指出的相同类型的错误:
bundles.Add(new StyleBundle("~/content/epic").Include(
"~/Content/Epic/StickyFooter.css"));
这是因为优化器尝试创建的虚拟路径(内容/史诗)恰好是我站点中的现有文件夹路径(我在根目录中有一个名为“content”的文件夹,它包含一个名为“史诗”)。如果我将捆绑路径更改为以下内容:
{myURL}/content/epic/?v=YTZL7Up6r-0uQblkv6unjKN5Nfb3uwtE0bPz9nxbjDc1 Failed to load
问题不再存在,因为我的“content”文件夹中没有名为“epic2”的文件夹。
与接受的答案相反,我建议不要将捆绑目录(例如“〜/ Content / a / b /”)更改为“〜/ css / a / b”,因为如果您的样式表会出现另一个潜在的问题包含对外部文件的相对引用。
考虑我的AjaxLoadAnimation.css样式表,其中包含以下代码段:
bundles.Add(new StyleBundle("~/content/epic2").Include(
"~/Content/Epic/StickyFooter.css"));
为了确保引用适用于优化和非优化编译,请确保捆绑包的路径与捆绑包中每个项目的路径匹配。如果您的样式表位于〜/ Content / my / path,那么您的包应该以〜/ Content / my / path开头。为了避免OP的问题,只需确保名称(在我的情况下为“sharedcss”)不与现有文件夹冲突。
...
background: rgba( 255, 255, 255, .5 ) url('images/spin.gif') 50% 50% no-repeat;
...
希望这能让其他人免于同样的挫折。