当我在本地计算机上发布或运行应用程序时,发布模式包不能正常工作。它会生成如下所示的URL:
http://localhost:60676/Content/css/?v=rRDBls2mnY7IG-YV_CwsQLv__74wfMTc-gyS9foHN601
http://localhost:60676/bundles/jquery?v=FVs3ACwOLIVInrAl5sdzR2jrCDmVOWFbZMY6g6Q0ulE1
http://localhost:60676/bundles/jqueryval?v=0EJjPUV3D0sQSPyawK-IAWWKeZ8W_Vg3wDTJ1MI1v3M1
http://localhost:60676/bundles/modernizr?v=wBEWDufH_8Md-Pbioxomt90vm6tJN2Pyy9u9zHtWsPo1
在控制台错误中读取如下: *
无法加载资源:服务器响应状态为403(禁止)
我在Global.asax中的代码如下Application_Start()
BundleConfig.RegisterBundles(BundleTable.Bundles);
BundleTable.EnableOptimizations = true;
答案 0 :(得分:3)
此错误主要是由于捆绑网址与物理文件/文件夹之间发生冲突而导致的。
例如,如果您的解决方案具有以下结构:
-root
-bundles
-jquery.js
你定义一个这样的包:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/bundles/jquery-{version}.js"));
这将导致403
因此,您需要做的是确保捆绑网址在解决方案中没有相应的文件夹。
答案 1 :(得分:0)
我有类似的问题,除了我收到500错误。
我做了以下事情:
确保在_Layout.cshtml页面中没有单独的脚本块或对脚本之外的会话的任何引用
不要这样做,(我认为这可能是抱怨引用会话的地方 - 不确定):
@ Html.Hidden(" TimeOutSetting",Session.Timeout)
然后在头部
之外的脚本块中引用它 $("#TimeOutSetting").val()
- instead use this in the scripting:
@Session.Timeout
确保所有脚本块都被@section Scripts {}包围 所有其他页面
添加它,以便正确编译 取决于您是否已选择“调试”或“发布”
#if DEBUG
BundleTable.EnableOptimizations = false;
#else
BundleTable.EnableOptimizations = true;
#endif
最后我有一些调试代码,我已经添加到Global.asx.cs文件中,我认为它抱怨在这里引用Session。情况可能并非如此,但我删除了它&它有效...
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
var session = context.Session;
var newSession = session.IsNewSession;
var cookieLess = session.IsCookieless;
var sessionId = session.SessionID;
string sessionCookie = context.Request.Headers["Cookie"];
}
我希望这有助于防止你在我最终想出这个之前就像疯了一样疯狂。
祝你好运!