asp.net如何生成scriptResource.axd URL?

3
我正在努力确保在部署新版本ASP.NET Web应用程序后,缓存中的陈旧图像/js/css文件不会被使用。目前我正在研究js方面的内容。首先,所有自己的脚本都通过System.Web.UI.ScriptManager注册,使用普通的js文件URL。因此,我创建了ScriptManager子类,并在脚本URL末尾添加?ver='x.x.x.x'。对于我的普通URL脚本,我认为没有任何问题,但总是有很多ScriptResource.axd引用,我对这些脚本表示担忧。
例如,在下一个版本中,我更新AjaxControlToolkit dll。 ScriptResource.axd URL与以前的AjaxControlToolkit使用的URL是否不同?ScriptResources.axd看起来非常奇怪,所以我希望它们是使用程序集哈希生成的。我已经阅读了大量关于scriptResource.axd的文献,但没有找到有关此主题的任何信息。有人有什么想法吗?
谢谢阅读。
1个回答

11

你的部分说法是正确的。资源URL的格式为 WebResource.axd?d=加密标识符&t=时间戳。其中,"d"代表所请求的Web资源,"t"是所请求程序集的时间戳,可以帮助确定是否对资源进行了任何更改。

简而言之,第一个参数是通过内部的Page.EncryptString方法加密的assemblyName + "|" + resourceName值;第二个参数是程序集上次写入日期的滴答数(通过使用File.GetLastWriteTime方法)。

因此,使用下一个版本或您的程序集将更改资源URL(重新生成程序集和/或更改其版本)。

更多信息请参见:


如果这是真的,为什么运行相同版本软件的服务器之间的d部分不同呢?或者这是ASP.NET 4.0中改变的东西吗? - StarQuake
@StarQuake,是的,看起来微软已经改变了网页资源生成机制。现在它变得更加复杂了。 - Oleks
@StarQuake,MachineKey 用于加密 "asseblyName|resourceName" 字符串。请确保手动指定 MachineKey 在所有机器上都相同。 - rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接