1

我们正在研究预编译我们的网站以缩短网站启动时间的可行性。我们试图避免的是csc.exe用户访问网站时的任何调用。当 csc.exe 运行时,IIS 不会为任何额外的 HTTP 请求提供服务。这限制了我们向网站发布新二进制文件的频率和速度,因为部署代码和预热我们场中的每个 Web 服务器需要数小时。

我已经aspnet_compiler.exe以可更新模式(即使用-u标志)编译站点,但经过测试,看起来 IIS 仍在调用csc.exe编译控件/页面。

> aspnet_compiler -v / -p F:\Projects\Website\webroot -u F:\BuildOutput\Website 

因此,我尝试不使用该-u标志,但现在出现编译错误:

> aspnet_compiler -v / -p F:\Projects\Website\webroot F:\BuildOutput\Website
/Tool/Controls/ToolCustomDateRangePicker.ascx(8): error ASPPARSE: Unknown server 
tag 'SharedControls:DateRangePicker'.

当我打开/Tool/Controls/ToolCustomDateRantPicker.ascx时,它SharedControls:DateRangePicker正确引用:

<%@ Register TagPrefix="SharedControls" TagName="DateRangePicker" 
             Src="../../common/Controls/DateRangePicker.ascx" %>

是什么赋予了? 为什么aspnet_compiler我的网站在可更新时可以正确编译,但在编译时却失败了,因此无法更新?

4

1 回答 1

0

我有一个类似的问题 - 似乎使用 -u 选项实际上并没有编译内部代码 - 所以它需要在运行时编译。来自:MSDN

使用此选项时,不会编译 .aspx 文件中的代码块(即位于脚本元素中或 <% 和 %> 标记之间的代码)。因此,如果这些代码块中存在编译错误,您只会在运行时看到该错误,因为 .aspx 文件只有在那时才被完全编译。对于依赖 .aspx 文件中的代码块的站点,使用此选项通常是不安全的。

于 2013-08-23T16:59:57.813 回答