【发布时间】:2016-01-05 14:07:10
【问题描述】:
我正在尝试更改 ASP.NET 临时文件的位置,以便在发布新版本期间清理它们。
因为很难找到特定网站的 ASP.NET 临时文件的位置,所以在 C:\Windows\Microsoft.NET\Framework C:\Windows\Microsoft.NET\Framework64 位置下应用虚拟目录我决定将文件移动到然后可以清理磁盘上的特定位置。
您可以通过修改system.web/compilation 配置部分中的tempDirectory 属性来做到这一点。
我们的服务器构建和发布过程是自动化的,因此将代码添加到配置和发布脚本中看起来很简单。
但是在测试过程中我发现 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 参数,该值将写入位于 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config 的 CLR 4.0 配置文件。
问题是应用程序池设置为“启用 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文件中指定此设置。
感谢您对此问题的任何启发。
【问题讨论】:
标签: windows powershell iis web-administration window-server