asp.net-mvc – 可以使用“Bundle.Include”(在ASP.NET MVC中使
发布时间:2020-12-16 00:25:10 所属栏目:asp.Net 来源:网络整理
导读:如果缺少javascript或css文件,是否有可能收到异常? 我已经试过下面的代码,但它永远不会抛出异常… public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { .... bundles.Add(new ScriptBundle("~/bundles/somethin
如果缺少javascript或css文件,是否有可能收到异常?
我已经试过下面的代码,但它永远不会抛出异常… public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { .... bundles.Add(new ScriptBundle("~/bundles/something").Include("~/Scripts/nonExistingFile.js")); // I would like the above usage of Include method with // a non-existing file to throw an exception to make it // obvious that an expected file is missing ... // but since it does not I tried to implement a method as below ... ... AssertThatAllFilesExist(bundles); // but unfortunately an exception is never thrown but when // iterating the files in the method below,// the non-existing file seems to never become retrieved ... } private static void AssertThatAllFilesExist(BundleCollection bundles) { HttpContext currentHttpContext = HttpContext.Current; var httpContext = new HttpContextWrapper(currentHttpContext); foreach (var bundle in bundles) { var bundleContext = new BundleContext(httpContext,bundles,bundle.Path); IEnumerable<FileInfo> files = bundle.EnumerateFiles(bundleContext); foreach (var file in files) { if (!file.Exists) { // if this problem would occur then it should // indicate that one of the arguments of the // method "Bundle.Include" does not // correspond to an existing file ... throw new ArgumentException("The following file does not exist: " + file.FullName); } } } } } 解决方法
我使用这个类而不是ScriptBundle:
public class ScriptBundleWithException : ScriptBundle { public ScriptBundleWithException( string virtualPath ) : base( virtualPath ) {} public ScriptBundleWithException( string virtualPath,string cdnPath ) : base( virtualPath,cdnPath ) {} public override Bundle Include( params string[] virtualPaths ) { foreach ( var virtualPath in virtualPaths ) { Include( virtualPath ); } return this; } public override Bundle Include( string virtualPath,params IItemTransform[] transforms ) { var realPath = System.Web.Hosting.HostingEnvironment.MapPath( virtualPath ); if ( !File.Exists( realPath ) ) { throw new FileNotFoundException( "Virtual path not found: " + virtualPath ); } return base.Include( virtualPath,transforms ); } } 然后在配置中: bundles.Add( new ScriptBundleWithException( "~/bundles/something" ) //... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-core – ASP.NET 5和MVC6中的project.json
- asp.net – 防止将aspnet_client文件夹添加到.NET站点
- asp.net-mvc – 每个验证属性的所有不显眼的验证属性的列表
- asp.net-mvc-3 – MVC 3 – 其他视图数据未出现在编辑器中用
- asp.net – Team Build 2010和web.config转换的问题
- asp.net – foreach块缺少一个结束“}”字符.确保你有匹配的
- asp.net-mvc – NullReferenceException ASP.NET MVC文本框
- asp.net-mvc – 可从全局路由访问的ASP.NET MVC3区域控制器
- asp.net-mvc – 在Web API 2中使用MVC 5 AttributeRouting的
- asp.net-mvc-3 – ASP.NET MVC3维护导航历史
推荐文章
站长推荐
热点阅读