c# – 获取MVC Bundle Querystring

c# – 获取MVC Bundle Querystring,第1张

概述是否可以在ASP.NET MVC中检测bundle查询字符串? 例如,如果我有以下捆绑请求: /css/bundles/mybundle.css?v=4Z9jKRKGzlz-D5dJi5VZtpy4QJep62o6A-xNjSBmKwU1 是否可以提取v查询字符串?: 4Z9jKRKGzlz-D5dJi5VZtpy4QJep62o6A-xNjSBmKwU1 我试过在捆绑转换中做这个,但没有运气.我 是否可以在ASP.NET MVC中检测bundle查询字符串?

例如,如果我有以下捆绑请求:

/CSS/bundles/mybundle.CSS?v=4Z9jKRKGzlz-D5dJi5VZtpy4QJep62o6A-xnjsBmKwU1

是否可以提取v查询字符串?:

4Z9jKRKGzlz-D5dJi5VZtpy4QJep62o6A-xnjsBmKwU1

我试过在捆绑转换中做这个,但没有运气.我发现即使将UseServerCache设置为false,转换代码也不会始终运行.

解决方法 自从我使用ASP Bundler以来已经有一段时间了(我记得它是完全糟糕的),这些笔记来自我的记忆.请确认其仍然有效.
当我回到开发计算机上时,我会更新这个.希望这将为您的搜索提供一个起点.

要解决此问题,您需要在System.Web.Optimization命名空间中进行探索.

最重要的是System.Web.Optimization.BundleResponse类,它有一个名为GetContentHashCode()的方法,这正是你想要的.不幸的是,MVC Bundler有一个糟糕的架构,我愿意打赌这仍然是一种内部方法.这意味着您将无法从代码中调用它.

当我回到家时(在我的开发盒上)我会尝试进一步探索这个命名空间

—–更新—-

谢谢你的验证.所以看起来你有几种方法可以实现你的目标:

1)使用与ASP Bundler相同的算法计算自己的哈希值

2)使用反射调用Bundler的内部方法

3)从bundler获取url(我相信有一个公共方法)并提取出查询字符串,然后从中提取哈希值(使用任何字符串提取方法)

4)因为糟糕的设计而对微软感到愤怒

让我们去#2(小心,因为它标记为内部而不是公共API的一部分,Bundler团队重命名该方法会打破你)

//This is the url passed to bundle deFinition in BundleConfig.csstring bundlePath = "~/bundles/jquery";//Need the context to generate responsevar bundleContext = new BundleContext(new httpContextwrapper(httpContext.Current),Bundletable.Bundles,bundlePath);//Bundle class has the method we need to get a BundleResponseBundle bundle = Bundletable.Bundles.GetBundleFor(bundlePath);var bundleResponse = bundle.GenerateBundleResponse(bundleContext);//BundleResponse has the method we need to call,but its marked as//internal and therefor is not available for public consumption.//To bypass this,reflect on it and manually invoke the methodvar bundleReflection = bundleResponse.GetType();var method = bundleReflection.getmethod("GetContentHashCode",System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);//contentHash is whats appended to your url (url?###-###...)var contentHash = method.Invoke(bundleResponse,null);

bundlePath变量与您为bundle提供的名称相同(来自BundleConfig.cs)

希望这可以帮助!祝好运!

编辑:忘了说在这周围添加一个测试是个好主意.测试将检查GetHashCode函数是否存在.这样,将来,如果Bundler的内部更改测试将失败,您将知道问题所在.

总结

以上是内存溢出为你收集整理的c# – 获取MVC Bundle Querystring全部内容,希望文章能够帮你解决c# – 获取MVC Bundle Querystring所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存