我已將ClientBuildManager.PrecompileApplicaiton
添加到我的Azure Web角色中,如here所述。網絡角色將會開始,然而,需要花費很長時間(15-20分鐘),大概來自它必須編譯的文件數量(18K +)。Azure中的ClientBuildManager.PrecompileApplication未使用預編譯版本
角色啓動後,我點擊該網站,在初始啓動時似乎沒有更快的速度。
當我將RDP添加到我的web角色時,我可以在Temporary ASP.NET Files中看到2個單獨的文件夾,其中一個包含我的所有預編譯代碼(3K +文件),另一個包含一組較小的文件這將在我最初的請求期間使用(50個文件)。
從我所知道的,該網站是預編譯的,但是,實際的請求並沒有利用這個預編譯和做一個正常的即時編譯,如前所述的請求。
查看上述內容後,我又向我的站點中的另一個頁面發出了另一個請求,並確認了50個文件增加到58個文件的文件夾,告訴我它實際上仍在進行即時編譯。 3K文件的其他文件夾保持不變。
這裏是我用我的預編譯的代碼在我OnStart
方法:
var siteName = RoleEnvironment.CurrentRoleInstance.Id + "_Web";
var mainSite = serverManager.Sites[siteName];
var rootVirtualPath = String.Format("/LM/W3SVC/{0}/ROOT/", mainSite.Id);
var clientBuildManager = new ClientBuildManager(rootVirtualPath, null);
clientBuildManager.PrecompileApplication();
我失去了別的東西,這將迫使作用,用我的預編譯的文件?
正如一個後續,我也嘗試了預編譯下面的代碼,但是這並沒有在Azure模擬器中。 的foreach(在serverManager.Sites VAR站點) { 的foreach(在site.Applications VAR應用) { 的foreach(在app.VirtualDirectories VAR DIR) { 變種clientBuildManager =新ClientBuildManager(dir.Path,DIR。 PhysicalPath); clientBuildManager.PrecompileApplication(); } } } – Bryan
我想嘗試提供第二個參數給ClientBuildManager的構造函數。並嘗試不同的構造函數。 https://msdn.microsoft.com/en-us/library/system.web.compilation.clientbuildmanager.clientbuildmanager(v=vs.110).aspx看起來,IIS無法將預編譯的文件夾與源代碼進行匹配。 – rocky