不使用 GUI 就无法启用 IIS 日志记录

Can't enable IIS logging without using the GUI

已通过 GUI 禁用 IIS 日志记录:

我只想启用它,但显然不使用 GUI 是不可能的。

我尝试过的命令:

appcmd set config /section:httpLogging /dontLog:False /selectiveLogging:LogAll

Set-ItemProperty "IIS:\Sites\MySite" -name logFile -value @{enabled=$true}

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='MySite']/logFile" -name "LogExtFileFlags" -value @{enabled=$true}

当我执行 Get-Windowsfeature 时,我可以看到 IIS-HttpLogging 被标记为已启用。

我没有尝试启用 IIS 日志记录,我必须使用 GUI 并单击启用。

当我运行这个它returns是的:

PS C:\Windows\System32\inetsrv> (Get-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST' -filter "/system.applicationHost/sites/MYSite" ).logfile.enabled

编辑: 因此,即使 GUI 将其显示为 "disabled",记录 似乎 也能正常工作。也许这是 GUI 中的错误?

编辑2: 好的,如果我尝试 appcmd 命令并定位到我的特定站点,我会收到此错误:

.\appcmd set config "MySite" /section:httpLogging /dontLog:False

PS C:\Windows\System32\inetsrv> .\appcmd set config "MySite" /section:httpLogging /dontLog:False
ERROR ( message:Can not set attribute "dontLog" to value "False".. Reason: This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false

是说该部分在父级别被锁定,但我能够在 GUI 中单击启用站点登录并且没有收到任何错误。

当我编写 IIS 管理器的克隆时,我可以告诉您 "Enable/Disable" 按钮链接到名为 "dontLog"、https://github.com/jexuswebserver/JexusManager/blob/master/JexusManager.Features.Logging/LoggingFeature.cs

的属性

可以在

找到它的参考

https://www.iis.net/configreference/system.webserver/httplogging