我正在尝试更改 ASP.NET 临时文件的位置,以便在发布新版本期间清理它们。
因为很难找到特定网站的 ASP.NET 临时文件的位置,所以在这些C:\Windows\Microsoft.NET\Framework
C:\Windows\Microsoft.NET\Framework64
位置下应用虚拟目录我决定将文件移动到磁盘上的特定位置会更容易,然后可以清洁。
您可以通过修改配置部分中的tempDirectory属性来完成此操作。system.web/compilation
我们的服务器构建和发布过程是自动化的,因此将代码添加到配置和发布脚本中看起来很简单。
然而,在测试过程中,我发现 32 位应用程序的位置并没有改变。
我正在使用的代码是:
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT' -location 'MyWebSite' -filter 'system.web/compilation' -name 'tempDirectory' -value 'E:\Temporary ASP.NET Files\MyWebSite' -Clr v2.0
此代码正常工作,并将条目写入根 web.config 文件中:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config
。
例如
<location path="MyWebSite">
<system.web>
<compilation tempDirectory="E:\Temporary ASP.NET Files\MyWebSite" />
</system.web>
</location>
请注意,如果没有 -Clr v2.0 参数,该值将写入 CLR 4.0 配置文件的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
.
问题是应用程序池设置为“启用 32 位应用程序”,因此该属性被忽略。
如果我手动将上面显示的位置元素C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config
从C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config
更改有效,并且确实 ASP.NET 临时文件移动到了网站编译时指定的这个位置。
问题不在于 ASP.NET 临时文件,而是一个更普遍的问题,即您打算如何在 PowerShell 或 IIS 中配置 32 位应用程序?似乎没有办法做到这一点,我觉得这很不可思议。仍有大量 32 位应用程序需要配置。
另请注意,我选择使用根 web.config 来存储此值是有充分理由的:
ApplicationHost.config
无法存储system.web
配置- 临时文件的位置在设计时是未知的,由托管服务器配置决定。因此,无法在
web.config
应用程序本身的文件中指定此设置。
感谢您对这个问题的任何启发。