2010-04-29 71 views
3

我試圖確保在部署新版本的asp.net Web應用程序後,緩存中的陳舊圖像/ js/css文件將不會被使用。asp.net如何生成scriptResource.axd url?

我目前正在尋找這個js方面。首先,我所有的腳本都通過System.Web.UI.ScriptManager註冊,並使用普通的url到js文件。所以,我已經對ScriptManager進行了分類,並且在腳本url的末尾添加了一個?ver ='x.x.x.x'。我沒有看到任何問題與我的腳本與普通的URL,但總是有很多ScriptResource.axd引用,我很關心這些腳本。

因此,例如,讓我說在我的下一個版本中,我更新AjaxControlToolkit DLL。 scriptResource.axd的URL與以前的AjaxControlToolkit使用的URL是不同的嗎? scriptResources.axd對我來說看起來很時髦,所以我希望它們是用程序集的散列或其他東西生成的?我已經在scriptResource.axd上做了大量的文獻,但是我沒有在這個主題上發現任何東西。有人有主意嗎?

感謝您的閱讀。

回答

10

你部分正確。資源URL的格式是WebResource.axd?d=encrypted identifier&t=time stamp value。 「d」表示請求的Web資源。 「t」是請求程序集的時間戳,它可以幫助確定是否對資源進行了任何更改。

簡而言之,第一個參數是加密的assemblyName + "|" + resourceName值(通過使用內部的Page.EncryptString方法);第二個參數是上次寫入日期的程序集數量(使用方法File.GetLastWriteTime)。

因此,使用下一個版本或您的程序集將更改資源URL(重建程序集和/或更改其版本)。

更多信息可以在這裏找到:

+3

出色答卷。 – willem 2011-04-12 07:47:14

+0

如果這是真的,爲什麼運行相同版本的軟件的服務器之間的d部分有所不同?或者是那些在ASP.NET 4.0中改變的東西? – StarQuake 2015-04-22 14:27:34

+0

@StarQuake,是的,似乎微軟已經改變了網絡資源生成機制。現在它要複雜得多 – Alex 2015-04-22 16:52:52