W3CParser 1.1.0

dotnet add package W3CParser --version 1.1.0
                    
NuGet\Install-Package W3CParser -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="W3CParser" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="W3CParser" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="W3CParser" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add W3CParser --version 1.1.0
                    
#r "nuget: W3CParser, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package W3CParser@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=W3CParser&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=W3CParser&version=1.1.0
                    
Install as a Cake Tool

W3CParser

W3CParser is a .NET library for parsing IIS W3C log files.

This fork adds support for IIS TLS-related fields:

  • crypt-protocol
  • crypt-cipher
  • crypt-hash
  • crypt-keyexchange

Protocol values now include TLS 1.3.

Features

  • Parses standard IIS W3C log fields
  • Extracts TLS and crypto metadata from IIS logs
  • Supports filtering and ordering of parsed events

Requirements

To populate the TLS-related fields in IIS logs, enable the corresponding server variables in IIS:

Installation

dotnet add package W3CParser --version 1.1.0

Usage Example

using System;
using System.IO;
using System.Linq;
using W3CParser.Enumerators;
using W3CParser.Parser;

using TextReader textReader = new StreamReader(@"C:\inetpub\logs\LogFiles\W3SVC1\u_ex230202_x.log");

var reader = new W3CReader(textReader);

foreach (var webEvent in reader.Read()
    .Where(x => x.CryptProtocol is not dwProtocol.SP_PROT_TLS1_2_SERVER
        and not dwProtocol.SP_PROT_TLS1_3_SERVER)
    .OrderBy(x => x.Status)
    .ThenBy(x => x.Date)
    .ThenBy(x => x.Time)
    .ThenBy(x => x.UriStem)
    .ThenBy(x => x.UriQuery))
{
    Console.WriteLine(
        "{0}\t{1:yyyy-MM-dd}\t{2:HH:mm:ss}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}",
        webEvent.Status,
        webEvent.Date,
        webEvent.Time,
        webEvent.UriStem,
        webEvent.UriQuery,
        webEvent.ClientIpAddress,
        webEvent.CryptProtocol,
        webEvent.CryptCipher,
        webEvent.CryptHash,
        webEvent.CryptKeyexchange);
}

References

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 177 3/12/2026
1.0.0 4,173 2/6/2023

Updated to .NET 10 and added TLS 1.3 support.