为IIS提供服务而预编译ASP.NET Webforms站点

为IIS提供服务而预编译ASP.NET Webforms站点,asp.net,iis,webforms,aspnet-compiler,Asp.net,Iis,Webforms,Aspnet Compiler,我有一个WindowsServer2019数据中心版本在AmazonEC2实例中运行。我在IIS中运行多个应用程序(每个应用程序都配置为站点,而不是虚拟目录应用程序)。例如,我可能有一个名为“abc.mycompany.com”的应用程序/站点,另一个名为“xyz.mycompany.com” 我正在尝试使用“aspnet_compiler.exe”预编译每个站点。我想编译每个网站完全一样,它将被编译时,有人第一次点击该网站。我需要IIS才能找到已编译的文件夹 但是,当我从命令行使用“aspne

我有一个WindowsServer2019数据中心版本在AmazonEC2实例中运行。我在IIS中运行多个应用程序(每个应用程序都配置为站点,而不是虚拟目录应用程序)。例如,我可能有一个名为“abc.mycompany.com”的应用程序/站点,另一个名为“xyz.mycompany.com”

我正在尝试使用“aspnet_compiler.exe”预编译每个站点。我想编译每个网站完全一样,它将被编译时,有人第一次点击该网站。我需要IIS才能找到已编译的文件夹

但是,当我从命令行使用“aspnet_compiler”时,它会编译到以下文件夹:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\43ab1102\aee092a7
当用户首次访问网站时,网站将编译到此文件夹:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\7bb02463\3efd21b2
请注意,最后两个子文件夹是不同的。因此,IIS找不到正确的文件夹,必须重新编译它

我在PowerShell中执行的命令是:

Set-Location -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
.\aspnet_compiler -v / -p "C:\inetpub\abc.mycompany.com"

如何将此命令编译到正确的文件夹?我知道EXE有一个位置参数,但很难猜出这是什么。有没有一种方法可以像第一次访问站点时调用EXE一样调用EXE?

我想我刚刚解决了这个问题。看起来我需要找到IIS站点ID,然后使用“aspnet\u编译器”的“-m”参数。我的PowerShell解决方案如下所示:

Set-Location -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
$siteId = Get-Website -Name "abc.mycompany.com" | Select -ExpandProperty ID
.\aspnet_compiler -m /LM/W3SVC/$siteId/ROOT

希望这对其他人有所帮助。

我请求您接受您的答复作为答复。因此,更多的人将能够查看您的解决方案。谢谢