我正在尝试使用ASP.NET MVC 4应用程序进行ASP.NET Bundling.情况是我想制作一个CDN样式的服务,它有JS和CSS文件,您可以从其他类型地址的网站处理:http://www.mycdn.com/scripts/plugin/js,捆绑并缩小所有包含的.js文件.
我对一个文件的bundle配置如下所示:
bundles.Add(new ScriptBundle("~/Scripts/plugin/pluginjs").Include("~/Scripts/plugin/jquery.plugin.js"));
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,即使我更改原始js文件后,捆绑包也不会更新.当我刷新浏览器时,我继续获得304 Not Modified,并且不会更新缩小文件的内容.如何更新捆绑包,因为捆绑旧内容是没用的?我尝试了各种方法,但无法找到解决方案.
提前致谢!
asp.net bundle bundling-and-minification asp.net-optimization
这可能是一个愚蠢的问题,但我遇到Visual Studio 2013和IIS(而不是Express)的问题,默认情况下Visual Studio调试器使用IIS Express(iisexpress.exe)来调试代码.但我不希望这样,但我想使用我的计算机上安装的IIS(w3wp.exe).
我通过使用Attach to Process ...成功调试IIS,然后选择All Users,然后选择w3wp.exe作为进程.但是每次开始调试时我都需要这样做.有没有办法默认使用IIS?在Visual Studio 2012中,一切运行良好,但在VS 2013中,我找不到默认情况下使用IIS(w3wp.exe)的选项.
我正在调试一个Web站点ASP.NET 4.0.
谢谢你的帮助!
我想要一些关于ASP.NET MVC Bundling和Minification的专家建议.我的项目脚本文件中包含未经编译的(.js)和缩小版本(.min.js).我已将它们包含在我的脚本包中,如下所示:
bundles.Add(new ScriptBundle("~/bundles/layout").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/lib/errorhandling.js",
"~/Scripts/lib/errorhandling.min.js",
"~/Scripts/vendor/modernizr.custom.js",
"~/Scripts/vendor/modernizr.custom.min.js",
"~/Scripts/toastr.js",
"~/Scripts/toastr.min.js"));
Run Code Online (Sandbox Code Playgroud)
似乎捆绑包确实只包含一次每个脚本文件,而不是两次.我已经确认了这一点,无论是开发还是生产.(作为旁注,在开发中,也就是说,当debug = true时,不会渲染包,但是文件作为单独的脚本标记包含在内.这也是我想要的行为.)
我的问题是:
(1)这是最好的和推荐的方法,包括用于生产设置的已缩小文件和用于开发的未分类文件?
(2)ASP.NET是否试图在生产中缩小整个捆绑包(即使它已经缩小)?如果是,阻止ASP.NET尝试缩小捆绑包的最佳方法是什么?
提前致谢!
我一直在使用log4net来记录我们的ASP.NET网站的日志消息,最近我想添加有关错误发生的页面/处理程序的信息.因此我决定将以下行添加到Global.asax:
void Application_BeginRequest(object sender, EventArgs e)
{
log4net.ThreadContext.Properties["page"] = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
}
Run Code Online (Sandbox Code Playgroud)
我明智地加入%property{page}了我的转换模式:
<conversionPattern value="%newline%date %-5level %property{page} - %message%newline%newline%newline" />
Run Code Online (Sandbox Code Playgroud)
这适用于单个请求.但后来我在日志中注意到,在ASP.NET请求期间,页面属性可能会发生变化.我已经登录了一个ASHX处理程序,并且在其处理过程中,页面属性将更改为指向ASPX页面的不同值.我得出结论,有另一个请求进入ASP.NET并且它BeginRequest被执行并且静态页面属性log4net.ThreadContext被更改为另一个值.
现在,我想维护每个请求的页面属性,以便我可以将执行页面的路径一致地记录到日志中.我试图找到答案,但我一无所获.解决此问题的推荐方法是什么?我确信这是Web服务器事件记录的非常基本的功能.
我遇到了在Windows Server 2003上运行的IE11和ASP.NET Web窗体(.NET 4.0)的问题.在IE11上,以下脚本标记未出现在源HTML中:
<script src="/ScriptResource.axd?d=WYhXIHdkh3HFOMewc5Dscl74H0FlrdD4oOAIu08capt3uxzykhWmBntlCyp0ApmvoCoZjoSCP5s1mUjzhOe99tXFvkHJ2vmkIMEuekr4y9dZdi8--YB4rXK6XO-b-mgnKReGNiAy9wDYm6lNNWWtBg2&t=ffffffffbd2983fc" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
随后IE11报道:
Unable to get property 'PageRequestManager' of undefined or null reference
Run Code Online (Sandbox Code Playgroud)
它适用于所有其他浏览器.
我想这与浏览器定义有关.任何人都知道如何解决这个问题?
更新:
该网站使用Windows 7和Visual Studio 2013以及.NET 4.5.1在我的本地计算机上运行.
您无法在Windows Server 2003上安装.NET 4.5或4.5.1,因此我们无法使用这些软件包更新服务器,但我们必须使用.NET 4.0.
此外,似乎服务器将浏览器识别为低级浏览器,因为"Auto"上的会话cookie支持将模式设置为"cookieless",因此cookie被写为URL的一部分.
希望这些信息能帮助我们解决问题.
谢谢!
asp.net iis webforms windows-server-2003 internet-explorer-11
asp.net ×4
iis ×2
asp.net-mvc ×1
bundle ×1
httpcontext ×1
log4net ×1
properties ×1
webforms ×1