Tôi thực sự vật lộn với điều này. Lệnh tương tự như những gì được xác nhận đây, và trên nhiều trang web khác.
Tôi muốn thêm trường ghi nhật ký tùy chỉnh vào IIS thông qua Add-WebConfigurationProperty
Lệnh PowerShell. Tên trường tùy chỉnh là X-Forwarded-For
. Tuy nhiên, tôi cũng đã cố gắng thêm một kiểm tra
cánh đồng. Tôi đang sử dụng IIS v10 trên Windows Server 2019.
Tôi sử dụng cái này:
Add-WebConfigurationProperty -filter "system.applicationHost/sites/siteDefaults/logFile/customFields" -name "." -value @{logFieldName='test';sourceName='X-Forwarded-For';sourceType='RequestHeader'}
Lần đầu tiên tôi chạy nó, tôi nhận được điều này:
Add-WebConfigurationProperty : Tên tệp: \?\C:\Windows\system32\inetsrv\config\applicationHost.config
Lỗi: Không thể thực hiện thay đổi cấu hình vì tệp đã thay đổi trên đĩa
Lần thứ hai tôi chạy nó, tôi nhận được điều này:
Add-WebConfigurationProperty : Tên tệp:
Lỗi: Không thể thêm mục nhập bộ sưu tập trùng lặp thuộc loại 'thêm' với thuộc tính khóa duy nhất 'logFieldName' được đặt thành 'kiểm tra'
Và, nó không bao giờ sửa đổi tệp applicationHost.config:
<siteDefaults>
<logFile logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Referer, HttpSubStatus" logFormat="W3C" directory="D:\inetpub\logs\logfiles">
<customFields>
<clear />
</customFields>
</logFile>
<traceFailedRequestsLogging directory="D:\inetpub\logs" />
<ftpServer>
<logFile directory="D:\inetpub\logs\logfiles" />
</ftpServer>
</siteDefaults>
Trường cũng không bao giờ hiển thị trong IIS Manager. Nó cũng không hiển thị với Get-WebConfigurationProperty
.
Ngoài ra, tôi đã thêm thủ công X-Forwarded-For
thông qua IIS Manager GUI (ngay lập tức sửa đổi applicationHost.config đúng cách và hiển thị qua Get-WebConfigurationProperty
), sau đó thử thêm nó thông qua Powershell và tôi lại gặp lỗi trường không thể thêm "trùng lặp". Sau đó, khi tôi xóa trường thông qua GUI và chạy lại lệnh, tôi gặp lỗi không thể cam kết thay đổi. Nếu tôi chạy lại lệnh, tôi nhận được lỗi không thể thêm trùng lặp. Tuy nhiên, applicationHost.config vẫn không được sửa đổi. Vì vậy, rõ ràng lệnh IS ảnh hưởng đến cùng một khu vực mà tôi đang thay đổi trong GUI và có vẻ như nó đã làm điều gì đó vì tôi không thể thêm các bản sao, nhưng các thay đổi không bao giờ xuất hiện trong applicationHost.config hoặc trong GUI. Tôi đã thử đóng và mở lại Trình quản lý IIS và khởi động lại IIS.
Tôi đang thiếu gì?