The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

HttpProductInfoHeaderValueCollection class

Represents the value of the User-Agent HTTP header on an HTTP request.


Public NotInheritable Class HttpProductInfoHeaderValueCollection
    Implements IList(Of HttpProductInfoHeaderValue), _
    IEnumerable(Of HttpProductInfoHeaderValue), _


The HttpProductInfoHeaderValueCollection class has these types of members:


The HttpProductInfoHeaderValueCollection class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.

Add [C#, VB]Adds a new item to the collection.
Append [C++, JavaScript]Adds a new HttpProductInfoHeaderValue item to the end of the collection.
Clear Removes all objects from the collection.
Contains [C#, VB]Determines whether an element is in the collection.
CopyTo [C#, VB]Copies the elements of the collection to an array, starting at a particular array index.
First [C++, JavaScript]Retrieves an iterator to the first HttpProductInfoHeaderValue item in the collection.
GetAt [C++, JavaScript]Returns the HttpProductInfoHeaderValue at the specified index in the collection.
GetMany [C++, JavaScript]Retrieves the HttpProductInfoHeaderValue items that start at the specified index in the collection.
GetView [C++, JavaScript]Returns an immutable view of the HttpProductInfoHeaderValueCollection.
IndexOf [C++, JavaScript]Retrieves the index of an HttpProductInfoHeaderValue in the collection.
IndexOf [C#, VB]Determines the index of a specific item in the collection.
Insert [C#, VB]Inserts an item into the collection at the specified index.
InsertAt [C++, JavaScript]Inserts an HttpProductInfoHeaderValue into the collection at the specified index.
ParseAdd Parses and adds an entry to the HttpProductInfoHeaderValueCollection.
Remove [C#, VB]Removes the first occurrence of a specific object from the collection.
RemoveAt [C++, JavaScript]Removes the entry at the specified index from the HttpMethodHeaderValueCollection.
RemoveAt [C#, VB]Removes the element at the specified index of the collection.
RemoveAtEnd [C++, JavaScript]Removes the last HttpProductInfoHeaderValue item from the collection.
ReplaceAll [C++, JavaScript]Replaces all the HttpProductInfoHeaderValue items in the collection with the specified HttpProductInfoHeaderValue items.
SetAt [C++, JavaScript]Sets the HttpProductInfoHeaderValue at the specified index in the collection.
ToString Returns a string that represents the current HttpProductInfoHeaderValueCollection object.
TryParseAdd Tries to parse and add the specified item to the HttpProductInfoHeaderValueCollection.



The HttpProductInfoHeaderValueCollection class has these properties.

PropertyAccess typeDescription

Count [C#, VB]


Gets the number of elements contained in the collection.

IsReadOnly [C#, VB]


Gets a value indicating whether the collection is read-only.

Item [C#, VB]


Gets or sets the element at the specified index.

Size [C++, JavaScript]


Gets the number of HttpProductInfoHeaderValue objects in the collection.



The HttpProductInfoHeaderValueCollection represents the value of the User-Agent HTTP header on an HTTP request.

The HttpProductInfoHeaderValueCollection is a collection of HttpProductInfoHeaderValue objects used for product information in the HTTP User-Agent header.

The User-Agent header contains information about the user agent originating the request. The User-Agent header can contain multiple product tokens and comments identifying the user agent and any sub-products.

The UserAgent property on the HttpRequestHeaderCollection returns an HttpProductInfoHeaderValueCollection object.


The following sample code shows a method to get and set the User-Agent HTTP header on an HttpRequestMessage object using the properties and methods on the HttpProductInfoHeaderValueCollection and HttpProductInfoHeaderValue classes.

using System;
using Windows.Web.Http;
using Windows.Web.Http.Headers;

        public void DemonstrateHeaderRequestUserAgent() {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.UserAgent.TryParseAdd("testprogram/1.0");

            // Set the header with a strong type.
            request.Headers.UserAgent.Add(new HttpProductInfoHeaderValue("myprogram", "2.2"));

            // Get the strong type out 
            foreach (var value in request.Headers.UserAgent) {
                System.Diagnostics.Debug.WriteLine("One of the UserAgent values: {0} / {1}", value.Product.Name, value.Product.Version);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The UserAgent ToString() results: {0}", request.Headers.UserAgent.ToString());

Requirements (Windows 10 device family)

Device family

Universal, introduced version 10.0.10240.0

API contract

Windows.Foundation.UniversalApiContract, introduced version 1.0


Windows::Web::Http::Headers [C++]



Requirements (Windows 8.x and Windows Phone 8.x)

Minimum supported client

Windows 8.1 [Windows Store apps, desktop apps]

Minimum supported server

Windows Server 2012 R2 [Windows Store apps, desktop apps]

Minimum supported phone

Windows Phone 8.1 [Windows Phone Silverlight 8.1 and Windows Runtime apps]


Windows::Web::Http::Headers [C++]





See also