Sam*_*Sam 13 c# asp.net iis-7 .net-4.0
我正在开发一个我想使用就地编译的网站,以便让第一次点击更快.我想用ClientBuildManager.CompileFile进行就地编译的方法,以便我控制编译过程.由于各种原因,这是编译本网站的理想方式.
当我通过文件编译网站文件时ClientBuildManager.CompileFile在为此目的构建的exe中的方法,输出转到"临时ASP.NET文件"下的子目录.但是,当以后点击网站时,IIS会在"临时ASP.NET文件"下的不同子目录下重建控件,使之前的就地编译变得毫无价值.
注意:在"临时ASP.NET文件"下的就地编译期间创建的程序集将保持不变(仍然存在).
注意:就地编译程序集文件夹和IIS生成的程序集文件夹都位于相同的"Temporary ASP.NET Files"目录下.
例:
ClientBuildManager.CompileFile组态var buildParameter = new ClientBuildManagerParameter
{
PrecompilationFlags = PrecompilationFlags.Default,
};
var clientBuildManager = new ClientBuildManager(
RootVirtualPath, RootPhysicalPath, null, buildParameter);
...
clientBuildManager.CompileFile(relativeVirtualPath, callback);
Run Code Online (Sandbox Code Playgroud)
哪里RootVirtualPath是简单的""默认网站. RootPhysicalPath指向网站磁盘上的位置. relativeVirtualPath形式为"〜/ myFile.aspx".回调用于跟踪进度.
Dav*_*bbo 12
我认为你所看到的实际上与CompileFilevs 的使用无关PrecompileApplication.即如果你做同样的事情,但打电话PrecompileApplication(),你仍然会得到一个文件夹不匹配.
请注意,从技术上讲,您没有正确创建CBM对象.调用它的正确方法是依靠IIS信息来定位文件.去做这个:
/LM/W3SVC/7/ROOT/的appVirtualDirappPhysicalSourceDir请注意,'7'只是一个例子.要获得正确的数字:
/LM/W3SVC/ID/ROOT/我正在为记录解释这个,因为不幸的是,即使以这种方式我也无法使文件夹匹配.这种情况可能只是在ASP.NET中被破坏了(它曾经工作过!).
另一种可能性是服务器端.例如
BuildManager.GetCompiledType("~/myfile.aspx")和类似的调用您想要预编译的每个页面(或用户控件等).当然,还有一种低技术替代方案,即只需要提前编辑您想要编辑的页面来预热您的网站.
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |