我们正在调查预编译网站以改善网站启动时间的可行性。我们试图避免的是当用户访问网站时调用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
在可更新时正确编译我的网站但在编译时失败,因此其不可更新?
答案 0 :(得分:0)
我有一个类似的问题 - 似乎使用-u选项实际上并没有编译内部代码 - 所以它需要在运行时编译。 从:MSDN
使用此选项时,.aspx文件中的代码块(即代码 位于脚本元素中或位于&lt;%和%&gt;之间标签)不是 编译。因此,如果这些代码块中存在编译错误, 您将仅在运行时看到错误,因为.aspx文件是 完全编译然后。使用此选项通常是不安全的 对于依赖.aspx文件中的代码块的站点。